将IBM C ++编译器从xlc_R 10.0升级到11.1后出现问题

时间:2012-09-20 15:20:29

标签: c++ aix corba idl xlc

所有内容编译都很好,但在运行时,它崩溃时没有任何coredump,例外或没有日志线索有关正在发生的事情。插入调试行后,我发现它是围绕这部分代码

       if( MISC_TABLE_ID != tableID )
       {
            OrbSchemaStructure orbSchemaStruct;
            orbSchemaStruct.tableName = tableView;
            orbSchemaStruct.columnName = colName;
            orbSchemaStruct.dataType   = tsFact->convertDBDataTypeToEVDataType( toString( col.type() ) );
            orbSchemaStruct.primaryKeyComponent = pkComponent;
            schemaStructureDeque.push_back( orbSchemaStruct );  //crashes after this line
        }

它发生在这个块的最后一行,其中发生了push_back。

并且schemaStructureDeque碰巧是DEQUE< OrbSchemaStructure >& schemaStructureDeque类型的对象,其中DEQUE是std :: deque的定义。

OrbSchemaStructure是idl中定义的结构,如下所示:

 struct OrbSchemaStructure
{
   string        tableName;
   string        columnName;
   unsigned long dataType;
   boolean       primaryKeyComponent;
};

处理deques的方式有什么变化吗?我错过了什么吗?

在将此问题视为过于本地化之前,如果我遗漏了任何信息,或者我没有找到正确的地方,请告诉我。

我正在使用omniORB 4.0.4 btw。

1 个答案:

答案 0 :(得分:0)

在使用新的AIX 11.1 C ++编译器在AIX上编译omniORB并将其与二进制文件链接时,它已经停止崩溃。