QAction::text(), программа получила сигнал SIGSEGV, ошибка сегментации
Я работал над миграцией продукта с QT4 на 5.
Я получаю эту ошибку, возвращаясь к ней-
#0 0x00007ffff5488cd1 in QAction::text() const () from /fa/sw/registry/22851-export_qt5-04-soni-01/serverdist/dist/x86_linux/lib64/libQt5Widgets.so.5
#1 0x0000000000c17435 in cQ_ELEMENTS_COMBOBOX::AppendItem(QString const&) ()
#2 0x00000000005441e6 in cEXPORT_FILE_PARMS::initialize(QWidget*, cQ_GRID_LAYOUT*, int, bool, char const*) ()
#3 0x0000000000545ad3 in cEXPORT_FILE_PARMS::cEXPORT_FILE_PARMS(QWidget*, cGV_DEC_PROJECT*, ExportOutputFileParameterSet*, cQ_GRID_LAYOUT*, int, QString) ()
asINT32 cQ_ELEMENTS_COMBOBOX::AppendItem(const QString &item_name)
{
//if item already exists then do not append item
if(GetAction(m_popup_p, item_name) == NULL) {
m_popup_p->addAction(item_name);
return 0;
}
return -1;
}
QAction* GetAction(QMenu* menu, const QString& actionName){
QList<QAction*>::iterator menuItr = menu->actions().begin();
/*const*/ QList<QAction*>::iterator menuEnd = menu->actions().end();
while (menuItr != menuEnd)
{
if((*menuItr)->text() == actionName){
return *menuItr;
}
menuItr++;
}
return NULL;
}
После выдачи выписок в этой строке программа вылетает -
if((*menuItr)->text() == actionName)
иногда это работает, а иногда падает, не в состоянии увидеть определенный шаблон. Есть ли обходной путь или какой-либо способ заранее обнаружить ошибку сегментации.