Все компилируется нормально, но во время выполнения происходит сбой без каких-либо coredumps, исключений или каких-либо логов о том, что происходит. Вставив строки отладки, я обнаружил, что это было в этом разделе кода
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;
};
Были ли какие-либо изменения в способе обработки заявок? Я что-то пропустил?
Прежде чем списывать этот вопрос как слишком локализованный, пожалуйста, дайте мне знать, если мне не хватает какой-либо информации, или я не ищу нужное место.
Я использую omniORB 4.0.4 кстати.
При компиляции в omniORB в AIX с использованием нового компилятора AIX 11.1 C ++ и связывании его с двоичным файлом он перестал падать.
Других решений пока нет …