QtFRED crashes while trying right mouse button on event
Steps to reproduce:
- Start QtFRED
- Open Events Editor
- Create new event
- Press right mouse button on True or do nothing
Debian, Qt 5.15.2, current source
Interesting, it crashes only on release or fastdebug build, but not on debug.
Release build gives this in console (I don't know if it's useful):
Stack: ./qtfred_22_1_0_x64 : ()+0x12430f
/lib/x86_64-linux-gnu/libc.so.6 : ()+0x38920
./qtfred_22_1_0_x64 : ()+0x2155c3
./qtfred_22_1_0_x64 : ()+0x229236
./qtfred_22_1_0_x64 : ()+0x22999c
/lib/x86_64-linux-gnu/libQt5Core.so.5 : ()+0x2e6123
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QWidget::customContextMenuRequested(QPoint const&)+0x35
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QWidget::event(QEvent*)+0x1064
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QFrame::event(QEvent*)+0x1e
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)+0xa2
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x6e
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplication::notify(QObject*, QEvent*)+0x3b4
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x12a
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : ()+0x1bed04
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : ()+0x1c1805
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x7f
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x12a
/lib/x86_64-linux-gnu/libQt5Gui.so.5 : QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*)+0x697
/lib/x86_64-linux-gnu/libQt5Gui.so.5 : QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0xac
/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 : ()+0x6d57a
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : g_main_context_dispatch()+0x26b
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : ()+0x54238
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : g_main_context_iteration()+0x2f
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x64
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0x12b
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::exec()+0x90
./qtfred_22_1_0_x64 : main()+0x1574
/lib/x86_64-linux-gnu/libc.so.6 : __libc_start_main()+0xcd
./qtfred_22_1_0_x64 : ()+0x11e2aa
Naruszenie ochrony pamięci
Backtrace from FastDebug build (no debugging symbols):
Thread 1 "qtfred_22_1_0_x" received signal SIGSEGV, Segmentation fault.
0x000055555576fdd3 in fso::fred::sexp_list_item::destroy() ()
(gdb) bt
#0 0x000055555576fdd3 in fso::fred::sexp_list_item::destroy() ()
#1 0x0000555555785775 in fso::fred::sexp_tree::buildContextMenu(QTreeWidgetItem*) ()
#2 0x000055555578605c in fso::fred::sexp_tree::customMenuHandler(QPoint const&) ()
#3 0x00007ffff513a123 in () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007ffff5bfc8e5 in QWidget::customContextMenuRequested(QPoint const&) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5 0x00007ffff5c18324 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007ffff5cc387e in QFrame::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7 0x00007ffff5103822 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007ffff5bd56ae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9 0x00007ffff5bdcb04 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff5103aba in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff5c30d04 in () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff5c33805 in () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff5bd56bf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff5103aba in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff54e0017 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#16 0x00007ffff54b625c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#17 0x00007fffeb3c057a in () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#18 0x00007ffff3202f8b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff3203238 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff32032ef in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007ffff515b0f4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff51024cb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff510a7a0 in QCoreApplication::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x000055555560b81b in main ()
Update: it crashes only on FastDebug. Debian linux, current source, Qt 5.15.15
Stack: ./qtfred_24_3_0_x64_AVX2-FASTDBG : ()+0x1b9933
/lib/x86_64-linux-gnu/libc.so.6 : ()+0x3fdf0
./qtfred_24_3_0_x64_AVX2-FASTDBG : ()+0x356ab3
./qtfred_24_3_0_x64_AVX2-FASTDBG : ()+0x36b8d5
./qtfred_24_3_0_x64_AVX2-FASTDBG : ()+0x36c586
/lib/x86_64-linux-gnu/libQt5Core.so.5 : ()+0x31893e
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QWidget::customContextMenuRequested(QPoint const&)+0x39
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QWidget::event(QEvent*)+0xfee
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QFrame::event(QEvent*)+0x22
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)+0x93
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x72
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplication::notify(QObject*, QEvent*)+0x1900
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x128
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : ()+0x1c0b15
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : ()+0x1c352f
/lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x82
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x128
/lib/x86_64-linux-gnu/libQt5Gui.so.5 : QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*)+0x8f3
/lib/x86_64-linux-gnu/libQt5Gui.so.5 : QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0xac
/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 : ()+0x7092e
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : ()+0x5c385
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : ()+0x5e5b7
/lib/x86_64-linux-gnu/libglib-2.0.so.0 : g_main_context_iteration()+0x30
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x6d
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0x132
/lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::exec()+0x92
./qtfred_24_3_0_x64_AVX2-FASTDBG : main()+0x1644
/lib/x86_64-linux-gnu/libc.so.6 : ()+0x29ca8
/lib/x86_64-linux-gnu/libc.so.6 : __libc_start_main()+0x85
./qtfred_24_3_0_x64_AVX2-FASTDBG : ()+0x1b0cf1
Naruszenie ochrony pamięci
Thread 1 "qtfred_24_3_0_x" received signal SIGSEGV, Segmentation fault.
0x00005555558aaab3 in fso::fred::sexp_list_item::destroy() ()
(gdb) bt
#0 0x00005555558aaab3 in fso::fred::sexp_list_item::destroy() ()
#1 0x00005555558bf8d5 in fso::fred::sexp_tree::buildContextMenu(QTreeWidgetItem*) ()
#2 0x00005555558c0586 in fso::fred::sexp_tree::customMenuHandler(QPoint const&) ()
#3 0x00007ffff3b1893e in ??? () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007ffff478aa79 in QWidget::customContextMenuRequested(QPoint const&) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5 0x00007ffff47a6d8e in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007ffff4855a92 in QFrame::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7 0x00007ffff3addbf3 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007ffff4763042 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9 0x00007ffff476b880 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff3adde98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007ffff47c0b15 in ??? () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff47c352f in ??? () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff4763052 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff3adde98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff3f44e53 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#16 0x00007ffff3f1679c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#17 0x00007fffe8cf492e in ??? () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#18 0x00007ffff2504385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff25065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff2506d20 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007ffff3b3aeed in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff3adc802 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff3ae5222 in QCoreApplication::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x0000555555666924 in main ()
I have a hunch that #6961 will fix this. Or at least I hope so. Will check back in after that's merged.
I'll check that PR. :)
If I fetched right that PR then sadly it still crashes on FastDebug. Debug build is fine. GCC 14.3
Chat with me on Discord I have another idea for a fix
Narrator: It didn't fix it.
Back to the drawing board...