Hi,

I had a crash in QDBusConnection::sessionBus() earlier today, called from a 
dtor in a style plugin. The traceback showed a NULL "this" pointer (frame #12):

    frame #4: 0x00007fff8b9035aa libsystem_platform.dylib`_sigtramp + 26
    frame #5: 0x000000010a30b15f QtCore`QMutex::lock() [inlined] 
std::__1::__atomic_base<QMutexData*, 
false>::compare_exchange_strong(__m=<unavailable>) + 1 at atomic:622
    frame #6: 0x000000010a30b15e QtCore`QMutex::lock() [inlined] bool 
QAtomicOps<QMutexData*>::testAndSetAcquire<QMutexData*>(std::__1::atomic<QMutexData*>&,
 QMutexData*, QMutexData*, QMutexData**) at qatomic_cxx11.h:158
    frame #7: 0x000000010a30b15e QtCore`QMutex::lock() [inlined] 
QBasicAtomicPointer<QMutexData>::testAndSetAcquire(QMutexData*, QMutexData*, 
QMutexData*&) at qbasicatomic.h:276
    frame #8: 0x000000010a30b15e QtCore`QMutex::lock() [inlined] 
QBasicMutex::fastTryLock(QMutexData*&) at qmutex.h:82
    frame #9: 0x000000010a30b15e QtCore`QMutex::lock(this=0x0000000000000020) + 
14 at qmutex.cpp:219
    frame #10: 0x0000000108b60f31 
QtDBus`QDBusConnectionManager::busConnection(QDBusConnection::BusType) 
[inlined] QMutexLocker::QMutexLocker(m=0x0000000000000020) + 81 at qmutex.h:128
    frame #11: 0x0000000108b60f29 
QtDBus`QDBusConnectionManager::busConnection(QDBusConnection::BusType) 
[inlined] QMutexLocker::QMutexLocker(m=0x0000000000000020) at qmutex.h:131
    frame #12: 0x0000000108b60f29 
QtDBus`QDBusConnectionManager::busConnection(this=0x0000000000000000, 
type=SessionBus) + 73 at qdbusconnection.cpp:116
    frame #13: 0x0000000108b63878 QtDBus`QDBusConnection::sessionBus() + 24 at 
qdbusconnection.cpp:1180

the dtor cannot do a double disconnect or something of the sort as far as I can 
see. It does however do

auto bus = QDBusConnection::sessionBus();

just like the ctor does when setting up DBus. Is that correct practice or 
should one somehow cache the result of sessionBus() in order to call it only 
once?

This is Qt 5.6, btw.

Thanks,
R.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to