Bug 394358 - Kwave crashes when closing About dialog
Summary: Kwave crashes when closing About dialog
Status: RESOLVED WORKSFORME
Alias: None
Product: kwave
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Thomas Eschenbacher
URL:
Keywords:
: 399739 (view as bug list)
Depends on:
Blocks:
 
Reported: 2018-05-17 08:10 UTC by kde
Modified: 2018-12-27 06:17 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: https://commits.kde.org/kwave/e237657b25e954060fce9419c27aebec3996c6b9
Sentry Crash Report:


Attachments
backtrace 1 (10.13 KB, text/plain)
2018-11-09 09:16 UTC, kde
Details
backtrace 2 (9.92 KB, text/plain)
2018-11-09 09:16 UTC, kde
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kde 2018-05-17 08:10:23 UTC
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

##########
Comment 1 Christoph Feck 2018-11-08 21:54:58 UTC
*** Bug 399739 has been marked as a duplicate of this bug. ***
Comment 2 kde 2018-11-09 09:16:09 UTC
Created attachment 116192 [details]
backtrace 1
Comment 3 kde 2018-11-09 09:16:22 UTC
Created attachment 116193 [details]
backtrace 2
Comment 4 kde 2018-11-09 09:16:50 UTC
I added two additional backtraces, they look a little different so I added them both.
Comment 5 Thomas Eschenbacher 2018-11-09 17:19:02 UTC
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?
Comment 6 Christoph Feck 2018-11-09 21:27:58 UTC
If the assert says "kernel/qwidget.cpp", then it is an assert in Qt.
Comment 7 Thomas Eschenbacher 2018-11-14 21:40:04 UTC
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?
Comment 8 Thomas Eschenbacher 2018-12-27 06:06:00 UTC
ok, 100% reproducible here, but only in the Help/About dialog
Comment 9 Thomas Eschenbacher 2018-12-27 06:17:06 UTC
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