| Summary: | Kid3 Crashed Upon Closing | ||
|---|---|---|---|
| Product: | [Applications] kid3 | Reporter: | xunilhcra |
| Component: | general | Assignee: | Urs Fleisch <ufleisch> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | Keywords: | drkonqi |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
xunilhcra
2022-08-09 05:51:27 UTC
I remember having seen this on macOS, but never on Linux. At the moment, I am not able to reproduce it, not even on macOS. So if you find a way to reproduce it, please let me know. Hello, I was able to get Kid3 to crash again. It happens randomly, when exiting the application. See backtrace below: Application: Kid3 (kid3), signal: Segmentation fault [KCrash Handler] #4 0x00000000000000e1 in ?? () #5 0x00007f3ee909230f in QtSharedPointer::ExternalRefCountData::destroy (this=0x564eca7bd9c0) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:149 #6 QSharedPointer<QQmlImageProviderBase>::deref (dd=0x564eca7bd9c0) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:458 #7 QSharedPointer<QQmlImageProviderBase>::deref (dd=0x564eca7bd9c0) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:454 #8 QSharedPointer<QQmlImageProviderBase>::deref (this=0x564eca7bdac8) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:453 #9 QSharedPointer<QQmlImageProviderBase>::~QSharedPointer (this=0x564eca7bdac8, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:310 #10 QHashNode<QString, QSharedPointer<QQmlImageProviderBase> >::~QHashNode (this=0x564eca7bdab0, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qhash.h:147 #11 QHash<QString, QSharedPointer<QQmlImageProviderBase> >::deleteNode2 (node=0x564eca7bdab0) at /usr/include/qt5/QtCore/qhash.h:595 #12 0x00007f3eef53173c in QHashData::free_helper (this=0x564eca7bd9e0, node_delete=0x7f3ee90922f0 <QHash<QString, QSharedPointer<QQmlImageProviderBase> >::deleteNode2(QHashData::Node*)>) at tools/qhash.cpp:572 #13 0x00007f3ee9089aec in QHash<QString, QSharedPointer<QQmlImageProviderBase> >::freeData (x=<optimized out>, this=0x564ecae9fb20) at /usr/include/qt5/QtCore/qhash.h:617 #14 QHash<QString, QSharedPointer<QQmlImageProviderBase> >::~QHash (this=0x564ecae9fb20, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qhash.h:250 #15 QHash<QString, QSharedPointer<QQmlImageProviderBase> >::~QHash (this=0x564ecae9fb20, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qhash.h:250 #16 QQmlEnginePrivate::~QQmlEnginePrivate (this=0x564ecae9fa50, __in_chrg=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.6+kde20-1.1.x86_64/src/qml/qml/qqmlengine.cpp:693 #17 0x00007f3ee9089cb9 in QQmlEnginePrivate::~QQmlEnginePrivate (this=0x564ecae9fa50, __in_chrg=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.6+kde20-1.1.x86_64/src/qml/qml/qqmlengine.cpp:693 #18 0x00007f3ee90910d9 in QQmlEngine::~QQmlEngine (this=0x564ecad6ed40, __in_chrg=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.6+kde20-1.1.x86_64/src/qml/qml/qqmlengine.cpp:1030 #19 0x00007f3ee00077d8 in QmlCommandPlugin::cleanup (this=0x564eca8ef860) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/plugins/qmlcommand/qmlcommandplugin.cpp:81 #20 0x00007f3ef0d348d2 in ExternalProcess::~ExternalProcess (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/core/model/externalprocess.cpp:69 #21 0x00007f3ef0d34969 in ExternalProcess::~ExternalProcess (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/core/model/externalprocess.cpp:71 #22 0x00007f3ef13a30c6 in QScopedPointerDeleter<ExternalProcess>::cleanup (pointer=<optimized out>) at /usr/include/qt5/QtCore/qscopedpointer.h:60 #23 QScopedPointer<ExternalProcess, QScopedPointerDeleter<ExternalProcess> >::~QScopedPointer (this=<optimized out>, this=<optimized out>) at /usr/include/qt5/QtCore/qscopedpointer.h:107 #24 FileList::~FileList (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/gui/forms/filelist.cpp:247 #25 0x00007f3ef13a3139 in FileList::~FileList (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/gui/forms/filelist.cpp:247 #26 0x00007f3eef70556e in QObjectPrivate::deleteChildren (this=this@entry=0x564eca83a850) at kernel/qobject.cpp:2137 #27 0x00007f3ef05e2646 in QWidget::~QWidget (this=0x564ecaa726f0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522 #28 0x00007f3ef07551d9 in QSplitter::~QSplitter (this=0x564ecaa726f0, __in_chrg=<optimized out>) at widgets/qsplitter.cpp:979 #29 0x00007f3eef70556e in QObjectPrivate::deleteChildren (this=this@entry=0x564eca970630) at kernel/qobject.cpp:2137 #30 0x00007f3ef05e2646 in QWidget::~QWidget (this=0x564ecaa71ad0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522 #31 0x00007f3ef0759f19 in QStackedWidget::~QStackedWidget (this=0x564ecaa71ad0, __in_chrg=<optimized out>) at widgets/qstackedwidget.cpp:147 #32 0x00007f3eef70556e in QObjectPrivate::deleteChildren (this=this@entry=0x564eca977680) at kernel/qobject.cpp:2137 #33 0x00007f3ef05e2646 in QWidget::~QWidget (this=0x564eca866ad0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522 #34 0x00007f3ef13a4449 in Kid3Form::~Kid3Form (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/gui/forms/kid3form.cpp:674 #35 0x00007f3eef70556e in QObjectPrivate::deleteChildren (this=this@entry=0x564eca8f5260) at kernel/qobject.cpp:2137 #36 0x00007f3ef05e2646 in QWidget::~QWidget (this=0x564eca87c430, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522 #37 0x0000564ec9f1babc in KdeMainWindow::~KdeMainWindow (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/build/src/app/kde/kid3_autogen/EWIEGA46WW/../../../../../../src/app/kde/kdemainwindow.h:58 #38 KdeMainWindow::~KdeMainWindow (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/build/src/app/kde/kid3_autogen/EWIEGA46WW/../../../../../../src/app/kde/kdemainwindow.h:58 #39 0x00007f3eef70779f in QObject::event (this=0x564eca87c430, e=0x564ecaf679e0) at kernel/qobject.cpp:1334 #40 0x00007f3ef12da839 in KXmlGuiWindow::event (this=0x564eca87c430, ev=0x564ecaf679e0) at /usr/src/debug/kxmlgui-5.98.0-1.2.x86_64/src/kxmlguiwindow.cpp:220 #41 0x00007f3ef05a53fe in QApplicationPrivate::notify_helper (this=this@entry=0x564eca6702d0, receiver=0x564eca87c430, e=0x564ecaf679e0) at kernel/qapplication.cpp:3637 #42 0x00007f3ef05ac7fd in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3383 #43 0x0000564ec9f24caa in (anonymous namespace)::Kid3KdeApplication::notify (this=<optimized out>, receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/app/kde/mainkde.cpp:72 #44 0x00007f3eef6dc178 in QCoreApplication::notifyInternal2 (receiver=0x564eca87c430, event=0x564ecaf679e0) at kernel/qcoreapplication.cpp:1064 #45 0x00007f3eef6df111 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x564eca63ab00) at kernel/qcoreapplication.cpp:1821 #46 0x00007f3eef734003 in postEventSourceDispatch (s=0x564eca7d14f0) at kernel/qeventdispatcher_glib.cpp:277 #47 0x00007f3eee26ea50 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #48 0x00007f3eee26ee08 in ?? () from /lib64/libglib-2.0.so.0 #49 0x00007f3eee26ee9c in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #50 0x00007f3eef733806 in QEventDispatcherGlib::processEvents (this=0x564eca7d1c60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #51 0x00007f3eef6dabeb in QEventLoop::exec (this=this@entry=0x7ffc06fb2ab0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #52 0x00007f3eef6e2d56 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #53 0x0000564ec9f1b252 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kid3-3.9.2-1.3.x86_64/src/app/kde/mainkde.cpp:169 [Inferior 1 (process 14837) detached] I figured out the process that will causing the crash. If you select "English Title Case" followed by opening the QML console, both from the context menu, Kid3 will crash when closing the application. It doesn't matter the order of which you select. You can open the QML console first and then select "English Title Case", but both actions have to be performed to reproduce the crash. Thanks for your investigations. I could reproduce the problem by using a "@qml" user action (e.g. "English Title Case") and a "@qmlview" user action ("QML Console") and then exiting the application, which will lead to the crash. At a lower level, the crash seems to happen when both the QQmlEngine and the QQuickView objects are deleted. I could not find any wrong code in the Kid3 sources, so I assume that this is an issue inside Qt. I have now worked around the problem by not deleting the QQuickView instance when this situation is detected. Since this happens at application exit, the leaked object should not be a real problem. I have published a development snapshot git20221009 at https://sourceforge.net/projects/kid3/files/kid3/development/. The binary release there does not have a KDE version and will not invoke drkonqi when it crashes, but you can verify normal program termination by running the application with GDB. Alternatively, you could build a KDE version for your distribution from the source code. As a workaround for the existing versions, one can run "Qt.quit()" in the QML console before closing it.
Fixed in version 3.9.3. |