Application: kid3 (3.9.2) Qt Version: 5.15.5 Frameworks Version: 5.96.0 Operating System: Linux 5.18.15-1-default x86_64 Windowing System: X11 Distribution: openSUSE Tumbleweed DrKonqi: 5.25.4 [KCrashBackend] -- Information about the crash: Closed Kid3 and out of the blue the Crash Handler popped up. The reporter is unsure if this crash is reproducible. -- Backtrace: Application: Kid3 (kid3), signal: Segmentation fault [KCrash Handler] #4 0x0000000000000041 in ?? () #5 0x00007fb980c921ff in ?? () from /lib64/libQt5Qml.so.5 #6 0x00007fb986b3175c in QHashData::free_helper(void (*)(QHashData::Node*)) () from /lib64/libQt5Core.so.5 #7 0x00007fb980c899dc in QQmlEnginePrivate::~QQmlEnginePrivate() () from /lib64/libQt5Qml.so.5 #8 0x00007fb980c89ba9 in QQmlEnginePrivate::~QQmlEnginePrivate() () from /lib64/libQt5Qml.so.5 #9 0x00007fb980c90fc9 in QQmlEngine::~QQmlEngine() () from /lib64/libQt5Qml.so.5 #10 0x00007fb96a6b27d8 in QmlCommandPlugin::cleanup() () from /usr/lib64/kid3/plugins/libqmlcommand.so #11 0x00007fb9881348d2 in ExternalProcess::~ExternalProcess() () from /usr/lib64/kid3/libkid3-core.so #12 0x00007fb988134969 in ExternalProcess::~ExternalProcess() () from /usr/lib64/kid3/libkid3-core.so #13 0x00007fb9888510c6 in FileList::~FileList() () from /usr/lib64/kid3/libkid3-gui.so #14 0x00007fb988851139 in FileList::~FileList() () from /usr/lib64/kid3/libkid3-gui.so #15 0x00007fb986d0532e in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5 #16 0x00007fb9879e2666 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5 #17 0x00007fb987b55229 in QSplitter::~QSplitter() () from /lib64/libQt5Widgets.so.5 #18 0x00007fb986d0532e in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5 #19 0x00007fb9879e2666 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5 #20 0x00007fb987b59f89 in QStackedWidget::~QStackedWidget() () from /lib64/libQt5Widgets.so.5 #21 0x00007fb986d0532e in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5 #22 0x00007fb9879e2666 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5 #23 0x00007fb988852449 in Kid3Form::~Kid3Form() () from /usr/lib64/kid3/libkid3-gui.so #24 0x00007fb986d0532e in QObjectPrivate::deleteChildren() () from /lib64/libQt5Core.so.5 #25 0x00007fb9879e2666 in QWidget::~QWidget() () from /lib64/libQt5Widgets.so.5 #26 0x0000562e84d54abc in ?? () #27 0x00007fb986d0752f in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5 #28 0x00007fb9887887f9 in KXmlGuiWindow::event(QEvent*) () from /lib64/libKF5XmlGui.so.5 #29 0x00007fb9879a541e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5 #30 0x0000562e84d5dcaa in ?? () #31 0x00007fb986cdbfb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5 #32 0x00007fb986cdef51 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib64/libQt5Core.so.5 #33 0x00007fb986d33c53 in ?? () from /lib64/libQt5Core.so.5 #34 0x00007fb98566cea0 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #35 0x00007fb98566d258 in ?? () from /lib64/libglib-2.0.so.0 #36 0x00007fb98566d2ec in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #37 0x00007fb986d33456 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5 #38 0x00007fb986cdaa2b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5 #39 0x00007fb986ce2b96 in QCoreApplication::exec() () from /lib64/libQt5Core.so.5 #40 0x0000562e84d54252 in ?? () #41 0x00007fb9866405b0 in __libc_start_call_main () from /lib64/libc.so.6 #42 0x00007fb986640679 in __libc_start_main_impl () from /lib64/libc.so.6 #43 0x0000562e84d54685 in _start () [Inferior 1 (process 18726) detached] Reported using DrKonqi
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.