Plasma 5.12.5 Frameworks 5.45.0 Qt 5.10.0 Kernel 4.16.8-1-default openSUSE Tumbleweed 20180515 KWave just crashed on exit after having a FLAC file loaded. Backtrace: ########## Application: Kwave (kwave), signal: Segmentation fault Using host libthread_db library "/lib64/libthread_db.so.1". [Current thread is 1 (Thread 0x7f0ea5025800 (LWP 4870))] Thread 3 (Thread 0x7f0e68afa700 (LWP 4906)): #0 0x00007f0ea0ed1bf4 in read () from /lib64/libc.so.6 #1 0x00007f0e8a0ce7b1 in pa_read () from /usr/lib64/pulseaudio/libpulsecommon-11.1.so #2 0x00007f0e8a75edde in pa_mainloop_prepare () from /usr/lib64/libpulse.so.0 #3 0x00007f0e8a75f850 in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0 #4 0x00007f0e8a75f910 in pa_mainloop_run () from /usr/lib64/libpulse.so.0 #5 0x00007f0e8a76d779 in ?? () from /usr/lib64/libpulse.so.0 #6 0x00007f0e8a0fd498 in ?? () from /usr/lib64/pulseaudio/libpulsecommon-11.1.so #7 0x00007f0ea03ea59b in start_thread () from /lib64/libpthread.so.0 #8 0x00007f0ea0ee0a1f in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7f0e8950e700 (LWP 4872)): #0 0x00007f0ea0ed6179 in poll () from /lib64/libc.so.6 #1 0x00007f0e9aed5429 in ?? () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f0e9aed553c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #3 0x00007f0ea1ba7a2b in QEventDispatcherGlib::processEvents (this=0x7f0e84000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:425 #4 0x00007f0ea1b4e95a in QEventLoop::exec (this=this@entry=0x7f0e8950dd90, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212 #5 0x00007f0ea1975baa in QThread::exec (this=<optimized out>) at thread/qthread.cpp:522 #6 0x00007f0e9d333a35 in ?? () from /usr/lib64/libQt5DBus.so.5 #7 0x00007f0ea197aba0 in QThreadPrivate::start (arg=0x7f0e9d5a3d60) at thread/qthread_unix.cpp:376 #8 0x00007f0ea03ea59b in start_thread () from /lib64/libpthread.so.0 #9 0x00007f0ea0ee0a1f in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7f0ea5025800 (LWP 4870)): [KCrash Handler] #6 0x00007f0ea2910dfa in QWidget::~QWidget (this=0x324a720, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1619 #7 0x00007f0ea2a62af9 in QScrollBar::~QScrollBar (this=0x324a720, __in_chrg=<optimized out>) at widgets/qscrollbar.cpp:371 #8 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x324a410) at kernel/qobject.cpp:1992 #9 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x324a3c0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #10 0x00007f0ea29bc24d in QAbstractScrollAreaScrollBarContainer::~QAbstractScrollAreaScrollBarContainer (this=0x324a3c0, __in_chrg=<optimized out>) at widgets/qabstractscrollarea_p.h:134 #11 QAbstractScrollAreaScrollBarContainer::~QAbstractScrollAreaScrollBarContainer (this=0x324a3c0, __in_chrg=<optimized out>) at widgets/qabstractscrollarea_p.h:134 #12 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x2364050) at kernel/qobject.cpp:1992 #13 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x2363410, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #14 0x00007f0ea2a61369 in QScrollArea::~QScrollArea (this=0x2363410, __in_chrg=<optimized out>) at widgets/qscrollarea.cpp:172 #15 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x1b99af0) at kernel/qobject.cpp:1992 #16 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x1b99920, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #17 0x00007f0ea29111d9 in QWidget::~QWidget (this=0x1b99920, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1735 #18 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x3260630) at kernel/qobject.cpp:1992 #19 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x3249c80, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #20 0x00007f0ea2a75729 in QStackedWidget::~QStackedWidget (this=0x3249c80, __in_chrg=<optimized out>) at widgets/qstackedwidget.cpp:147 #21 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x2364800) at kernel/qobject.cpp:1992 #22 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x1aa5c30, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #23 0x00007f0ea2a945d9 in QTabWidget::~QTabWidget (this=0x1aa5c30, __in_chrg=<optimized out>) at widgets/qtabwidget.cpp:368 #24 0x00007f0ea1b7c03b in QObjectPrivate::deleteChildren (this=this@entry=0x3268310) at kernel/qobject.cpp:1992 #25 0x00007f0ea2910fbc in QWidget::~QWidget (this=0x1b99ff0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1711 #26 0x00007f0e797508d1 in Kwave::AboutDialog::~AboutDialog (this=0x1b99ff0, __in_chrg=<optimized out>) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/plugins/about/AboutDialog.cpp:225 #27 Kwave::AboutDialog::~AboutDialog (this=0x1b99ff0, __in_chrg=<optimized out>) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/plugins/about/AboutDialog.cpp:227 #28 0x00007f0e7975631e in Kwave::AboutPlugin::start (this=<optimized out>, params=...) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/plugins/about/AboutPlugin.cpp:50 #29 0x00007f0ea4973cec in Kwave::PluginManager::executePlugin (this=0x1b39100, name=..., params=0x7ffdb1766348) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/libkwave/PluginManager.cpp:236 #30 0x000000000041c6db in Kwave::FileContext::executeCommand (this=this@entry=0x1b24460, line=...) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/kwave/FileContext.cpp:428 #31 0x000000000042e7b4 in Kwave::TopWidget::forwardCommand (this=<optimized out>, command=...) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/kwave/TopWidget.cpp:877 #32 0x0000000000439d96 in Kwave::TopWidget::qt_static_metacall (_o=0x17ced80, _id=<optimized out>, _a=0x7ffdb17665e0, _c=QMetaObject::InvokeMetaMethod) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/build/kwave/kwave_core_autogen/EWIEGA46WW/moc_TopWidget.cpp:216 #33 0x0000000000439e4a in Kwave::TopWidget::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/build/kwave/kwave_core_autogen/EWIEGA46WW/moc_TopWidget.cpp:208 #34 0x00007f0ea1b7e26a in QMetaObject::activate (sender=0x16fe4f0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdb17665e0) at kernel/qobject.cpp:3766 #35 0x00007f0ea1b7e977 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f0ea4e4b840 <Kwave::MenuManager::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdb17665e0) at kernel/qobject.cpp:3628 #36 0x00007f0ea4c34492 in Kwave::MenuManager::sigMenuCommand (this=<optimized out>, _t1=...) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/build/libgui/libkwavegui_autogen/EWIEGA46WW/moc_MenuManager.cpp:144 #37 0x00007f0ea1b7ec52 in QObject::event (this=0x16fe4f0, e=<optimized out>) at kernel/qobject.cpp:1246 #38 0x00007f0ea28d901c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x16fe4f0, e=0x235f100) at kernel/qapplication.cpp:3733 #39 0x00007f0ea28e0314 in QApplication::notify (this=0x7ffdb1766c00, receiver=0x16fe4f0, e=0x235f100) at kernel/qapplication.cpp:3492 #40 0x00007f0ea1b50148 in QCoreApplication::notifyInternal2 (receiver=0x16fe4f0, event=event@entry=0x235f100) at kernel/qcoreapplication.cpp:1044 #41 0x00007f0ea1b52b25 in QCoreApplication::sendEvent (event=0x235f100, receiver=<optimized out>) at kernel/qcoreapplication.h:234 #42 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x131ff20) at kernel/qcoreapplication.cpp:1719 #43 0x00007f0ea1b530a8 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1573 #44 0x00007f0ea1ba8393 in postEventSourceDispatch (s=0x146abe0) at kernel/qeventdispatcher_glib.cpp:276 #45 0x00007f0e9aed5277 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #46 0x00007f0e9aed54b0 in ?? () from /usr/lib64/libglib-2.0.so.0 #47 0x00007f0e9aed553c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #48 0x00007f0ea1ba7a0f in QEventDispatcherGlib::processEvents (this=0x139a030, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #49 0x00007f0e94b43781 in QPAEventDispatcherGlib::processEvents (this=0x139a030, flags=...) at qeventdispatcher_glib.cpp:69 #50 0x00007f0ea1b4e95a in QEventLoop::exec (this=this@entry=0x7ffdb1766b10, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212 #51 0x00007f0ea1b57494 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1332 #52 0x00000000004148e3 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwave-18.04.0-1.1.x86_64/kwave/main.cpp:263 ##########
*** Bug 399739 has been marked as a duplicate of this bug. ***
Created attachment 116192 [details] backtrace 1
Created attachment 116193 [details] backtrace 2
I added two additional backtraces, they look a little different so I added them both.
I can confirm this here, this kind of crash happens in several kinds of situations. The more interesting stuff is the text that comes out on the console: FileContext::executeCommand(): loading plugin 'about' FileContext::executeCommand(): with 1 parameter(s) ASSERT: "d->focus_next->d_func()->focus_prev == this" in file kernel/qwidget.cpp, line 1607 KCrash: Application 'kwave' crashing... It is this ASSERT that causes the trouble. It has been introduced in the KDE libraries and IMHO is useless. Does anyone know a way how to prevent this?
If the assert says "kernel/qwidget.cpp", then it is an assert in Qt.
OK, then it is in Qt. But I do not understand what that assert shall be good for. I have absolutely no idea what goes wrong here, and why it does not affect thousands of other applications too!? I am not aware of doing anything special there, I create a dialog, I close it, I delete the object... what should be so wrong about that? Does anyone have an idea?
ok, 100% reproducible here, but only in the Help/About dialog
Root cause was that a tab within a tab widget was included in the list of tab stops, as well as its parent widget. Should work now, see git commit: https://commits.kde.org/kwave/e237657b25e954060fce9419c27aebec3996c6b9