Код: Выделить всё
void MainWindow::on_actionQuit_triggered()
{
qDebug("destroy()");
destroy();
}
MainWindow::~MainWindow()
{
qDebug("~MainWindow");
if (ui->actionJPEG->isChecked()) {
qDebug("ui->actionJPEG->isChecked()");
on_actionJPEG_triggered(false);
}
if (ui->actionRtsp->isChecked()) {
qDebug("ui->actionRtsp->isChecked()");
on_actionRtsp_triggered(false);
}
if (is_connected) {
qDebug("is_connected");
server_connect();
}
if (ui->actionDebug_output->isChecked()) {
qDebug("ui->actionDebug_output->isChecked()");
on_actionDebug_output_triggered(false);
}
delete socket;
delete cur_camera;
delete cur_status;
delete ui;
}
При закрытии приложения в консоли следующий вывод:
Код: Выделить всё
destroy()
Segmentation fault
Получается, что деструктор не вызывается, но почему?
Вывод GDB:
Код:
[Thread debugging using libthread_db enabled]
destroy()
Program received signal SIGSEGV, Segmentation fault.
0xb7629109 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
(gdb) bt
#0 0xb7629109 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#1 0xb7629b42 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#2 0xb76299fc in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#3 0xb76299fc in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#4 0xb7628d1f in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#5 0xb7824ffe in ?? () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#6 0xb761f7e2 in QWidgetPrivate::syncBackingStore() () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#7 0xb762ff74 in QWidget::event(QEvent*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#8 0xb7a816d5 in QMainWindow::event(QEvent*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#9 0xb75c6d7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#10 0xb75cab64 in QApplication::notify(QObject*, QEvent*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#11 0xb71c615b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#12 0xb71c7457 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#13 0xb71c763d in QCoreApplication::sendPostedEvents(QObject*, int) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#14 0xb71f6344 in ?? () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#15 0xb6bfd305 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#16 0xb6c00fe8 in ?? () from /lib/libglib-2.0.so.0
#17 0xb6c011c8 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#18 0xb71f6741 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#19 0xb7687a55 in ?? () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#20 0xb71c531d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#21 0xb71c55aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#22 0xb71c7701 in QCoreApplication::exec() () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtCore.so.4
#23 0xb75c63b7 in QApplication::exec() () from /opt/QtSDK4.7/Desktop/Qt/473/gcc/lib/libQtGui.so.4
#24 0x0804e15f in main ()
Вопрос - как необходимо корректно завершать приложение?
Спасибо.