Application: plasmashell (5.6.3) Qt Version: 5.5.1 Frameworks Version: 5.21.0 Operating System: Linux 4.5.0-3-default x86_64 Distribution: "openSUSE Tumbleweed (20160117) (x86_64)" -- Information about the crash: - What I was doing when the application crashed: Basically, just stopping my app. It's QT and I do call qDBusRegisterMetaType<metamap>() at object ctor where metamap is QMap<QString,QDBusVariant>. Using D-Feet to watch the session bus -- Backtrace: Application: Plasma (plasmashell), signal: Segmentation fault Using host libthread_db library "/lib64/libthread_db.so.1". [Current thread is 1 (Thread 0x7f56a09868c0 (LWP 2978))] Thread 7 (Thread 0x7f568a011700 (LWP 2981)): #0 0x00007f5699ef243d in poll () at /lib64/libc.so.6 #1 0x00007f569edd1432 in () at /usr/lib64/libxcb.so.1 #2 0x00007f569edd3007 in xcb_wait_for_event () at /usr/lib64/libxcb.so.1 #3 0x00007f568c165dd9 in () at /usr/lib64/libQt5XcbQpa.so.5 #4 0x00007f569a5e190f in () at /usr/lib64/libQt5Core.so.5 #5 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #6 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 6 (Thread 0x7f56873dc700 (LWP 2982)): #0 0x00007f5699ef243d in poll () at /lib64/libc.so.6 #1 0x00007f56965df374 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007f56965df47c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007f569a80643b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007f569a7b052a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007f569a5dcacc in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007f569d8af7b5 in () at /usr/lib64/libQt5Qml.so.5 #7 0x00007f569a5e190f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #9 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 5 (Thread 0x7f567cf7a700 (LWP 2983)): #0 0x00007f56996ff02f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007f568431ad23 in () at /usr/lib64/dri/r600_dri.so #2 0x00007f568431a537 in () at /usr/lib64/dri/r600_dri.so #3 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #4 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 4 (Thread 0x7f5676c22700 (LWP 2984)): #0 0x00007f5699ef243d in poll () at /lib64/libc.so.6 #1 0x00007f56965df374 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007f56965df47c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007f569a80643b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007f569a7b052a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007f569a5dcacc in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007f569d8af7b5 in () at /usr/lib64/libQt5Qml.so.5 #7 0x00007f569a5e190f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #9 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 3 (Thread 0x7f56753aa700 (LWP 2985)): #0 0x00007f5699ef243d in poll () at /lib64/libc.so.6 #1 0x00007f56965df374 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007f56965df47c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007f569a80643b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007f569a7b052a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007f569a5dcacc in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007f569d8af7b5 in () at /usr/lib64/libQt5Qml.so.5 #7 0x00007f569a5e190f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #9 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 2 (Thread 0x7f5673a26700 (LWP 2986)): #0 0x00007f56996ff02f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007f56a0072a84 in () at /usr/lib64/libQt5Script.so.5 #2 0x00007f56a0072ac9 in () at /usr/lib64/libQt5Script.so.5 #3 0x00007f56996f9454 in start_thread () at /lib64/libpthread.so.0 #4 0x00007f5699efad8d in clone () at /lib64/libc.so.6 Thread 1 (Thread 0x7f56a09868c0 (LWP 2978)): [KCrash Handler] #6 0x00007f569eb66794 in QMapData<QString, QMap<QString, QVariant> >::findNode(QString const&) const (this=0x7400690073006f, akey=...) at /usr/include/qt5/QtCore/qmap.h:284 #7 0x00007f569eb64df9 in Plasma::Service::isOperationEnabled(QString const&) const (akey=..., this=<optimized out>) at /usr/include/qt5/QtCore/qmap.h:656 #8 0x00007f569eb64df9 in Plasma::Service::isOperationEnabled(QString const&) const (this=0x6bb97c0, operation=...) at /usr/src/debug/plasma-framework-5.21.0/src/plasma/service.cpp:165 #9 0x00007f55ee7c5ab3 in () at /usr/lib64/qt5/plugins/plasma/dataengine/plasma_engine_mpris2.so #10 0x00007f569eb66d49 in Plasma::ServiceJob::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /usr/src/debug/plasma-framework-5.21.0/build/src/plasma/moc_servicejob.cpp:89 #11 0x00007f569a7e0c59 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5 #12 0x00007f569b91787c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #13 0x00007f569b91c986 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #14 0x00007f569a7b2be3 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #15 0x00007f569a7b4f06 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5 #16 0x00007f569a806013 in () at /usr/lib64/libQt5Core.so.5 #17 0x00007f56965df1a7 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #18 0x00007f56965df3d8 in () at /usr/lib64/libglib-2.0.so.0 #19 0x00007f56965df47c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #20 0x00007f569a80641f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #21 0x00007f569a7b052a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #22 0x00007f569a7b81ed in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5 #23 0x000000000041d964 in () #24 0x00007f5699e315b0 in __libc_start_main () at /lib64/libc.so.6 #25 0x000000000041da99 in _start () Reported using DrKonqi
Changed my typedef from: typedef QMap<QString,QDBusVariant> metamap; to: typedef QMap<QString,QVariant> metamap; and changed an insert into the map from: ret.insert("mpris:length", QString::number(m_zone->pnTrackDuration()*1000)); to: ret.insert("mpris:length", QVariant::fromValue((m_zone->pnTrackDuration()*1000)));
I meant to add to the above comment that now it won't repro.
So are you making your own MPris enabled app? Do you have a link to it? (ideally a version that crashes plasma) Do you still have the d-feet log? It definitely isn't coming from the qDBusRegister itself, but rather when you emit something it may end up with a different signature. (please reopen the bug to unconfirmed when you reply)
Sort of. It's a proxy app that wraps the web service from JRiver MediaCenter into a MPRIS "player" so that you can control JRiver MC with any MPRIS applet. In addition, it provides an alternative GUI to simultaneously manage playback on multiple JRiver MC servers on your net. Each JRiver server can provide any number of playback zones (roughly related to sound/video output devices), so it can get complex and MPRIS using the dbus object-path per process creates a bit of a problem. It currently only works if JRiver is running somewhere on your net. Yes, I've converted everything applicable to QVariantMap and I am no longer using qDBusRegister, but it is still crashing occasionally. For some reason, DrKonqi isn't picking up the crash and PlasmaSHell is just restarting itself...
Git commit 935050ff715c3ee14130b015943f4ce189a4622c by Marco Martin. Committed on 22/04/2016 at 10:20. Pushed by mart into branch 'master'. guard m_controller with a QPointer is possible it's null for an instant when the player quits a call to start() in the moment between the app is closed and the teardown is done is unlikely but apparently happens M +14 -3 dataengines/mpris2/playeractionjob.cpp M +3 -2 dataengines/mpris2/playeractionjob.h http://commits.kde.org/plasma-workspace/935050ff715c3ee14130b015943f4ce189a4622c
Git commit f86fa3cd776a48367aa15331c1c0b102fd378d03 by Marco Martin. Committed on 22/04/2016 at 10:20. Pushed by mart into branch 'Plasma/5.6'. guard m_controller with a QPointer is possible it's null for an instant when the player quits a call to start() in the moment between the app is closed and the teardown is done is unlikely but apparently happens M +14 -3 dataengines/mpris2/playeractionjob.cpp M +3 -2 dataengines/mpris2/playeractionjob.h http://commits.kde.org/plasma-workspace/f86fa3cd776a48367aa15331c1c0b102fd378d03
(In reply to Mike from comment #4) > Sort of. It's a proxy app that wraps the web service from JRiver > MediaCenter into a MPRIS "player" so that you can control JRiver MC with any > MPRIS applet. In addition, it provides an alternative GUI to simultaneously > manage playback on multiple JRiver MC servers on your net. Each JRiver > server can provide any number of playback zones (roughly related to > sound/video output devices), so it can get complex and MPRIS using the dbus > object-path per process creates a bit of a problem. > > It currently only works if JRiver is running somewhere on your net. Wow. Could you share your app? I'm (and not only one) looking for such tool.