diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 698fb1b..6fdb735 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -114,7 +114,7 @@ static inline QDebug operator<<(QDebug dbg, const QDBusConnectionPrivate *conn)
     return dbg.space();
 }
 
-void qdbusDefaultThreadDebug(int action, int condition, QDBusConnectionPrivate *conn)
+void qdbusDefaultThreadDebug(int action, int condition, QDBusConnectionPrivate *conn, void *mutex)
 {
     qDBusDebug() << QThread::currentThread()
                  << "Qt D-Bus threading action" << action
@@ -131,6 +131,7 @@ void qdbusDefaultThreadDebug(int action, int condition, QDBusConnectionPrivate *
                      condition == QDBusLockerBase::BeforeRelease ? "before release" :
                      condition == QDBusLockerBase::AfterRelease ? "after release" :
                      "condition unknown")
+                 << "over mutex" << mutex
                  << "in connection" << conn;
 }
 qdbusThreadDebugFunc qdbusThreadDebug = 0;
@@ -1146,7 +1147,7 @@ void QDBusConnectionPrivate::customEvent(QEvent *e)
 
     QDBusConnectionCallbackEvent *ev = static_cast<QDBusConnectionCallbackEvent *>(e);
     QDBusLockerBase::reportThreadAction(int(AddTimeoutAction) + int(ev->subtype),
-                                        QDBusLockerBase::BeforeDeliver, this);
+                                        QDBusLockerBase::BeforeDeliver, this, 0);
     switch (ev->subtype)
     {
     case QDBusConnectionCallbackEvent::AddTimeout: {
@@ -1171,7 +1172,7 @@ void QDBusConnectionPrivate::customEvent(QEvent *e)
         break;
     }
     QDBusLockerBase::reportThreadAction(int(AddTimeoutAction) + int(ev->subtype),
-                                        QDBusLockerBase::AfterDeliver, this);
+                                        QDBusLockerBase::AfterDeliver, this, 0);
 }
 
 void QDBusConnectionPrivate::doDispatch()
@@ -1578,10 +1579,10 @@ void QDBusActivateObjectEvent::placeMetaCall(QObject *)
     QDBusConnectionPrivate *that = QDBusConnectionPrivate::d(connection);
 
     QDBusLockerBase::reportThreadAction(HandleObjectCallPostEventAction,
-                                        QDBusLockerBase::BeforeDeliver, that);
+                                        QDBusLockerBase::BeforeDeliver, that, 0);
     that->activateObject(node, message, pathStartPos);
     QDBusLockerBase::reportThreadAction(HandleObjectCallPostEventAction,
-                                        QDBusLockerBase::AfterDeliver, that);
+                                        QDBusLockerBase::AfterDeliver, that, 0);
 
     handled = true;
 }
@@ -2589,9 +2590,9 @@ bool QDBusConnectionPrivate::isServiceRegisteredByThread(const QString &serviceN
 
 void QDBusConnectionPrivate::postEventToThread(int action, QObject *object, QEvent *ev)
 {
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforePost, this);
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforePost, this, 0);
     QCoreApplication::postEvent(object, ev);
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterPost, this);
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterPost, this, 0);
 }
 
 QT_END_NAMESPACE
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index 8041068..ba86e88 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -48,13 +48,13 @@
 
 #ifndef QT_NO_DBUS
 
-#if !defined(QDBUS_THREAD_DEBUG) && defined(QT_BUILD_INTERNAL)
+// #if !defined(QDBUS_THREAD_DEBUG) && defined(QT_BUILD_INTERNAL)
 # define QDBUS_THREAD_DEBUG 1
-#endif
+// #endif
 
 #if QDBUS_THREAD_DEBUG
 QT_BEGIN_NAMESPACE
-typedef void (*qdbusThreadDebugFunc)(int, int, QDBusConnectionPrivate *);
+typedef void (*qdbusThreadDebugFunc)(int, int, QDBusConnectionPrivate *, void *);
 Q_DBUS_EXPORT void qdbusDefaultThreadDebug(int, int, QDBusConnectionPrivate *);
 extern Q_DBUS_EXPORT qdbusThreadDebugFunc qdbusThreadDebug;
 QT_END_NAMESPACE
@@ -123,10 +123,10 @@ struct QDBusLockerBase
     };
 
 #if QDBUS_THREAD_DEBUG
-    static inline void reportThreadAction(int action, int condition, QDBusConnectionPrivate *ptr)
-    { if (qdbusThreadDebug) qdbusThreadDebug(action, condition, ptr); }
+    static inline void reportThreadAction(int action, int condition, QDBusConnectionPrivate *ptr, void *mutex)
+    { if (qdbusThreadDebug) qdbusThreadDebug(action, condition, ptr, mutex); }
 #else
-    static inline void reportThreadAction(int, int, QDBusConnectionPrivate *) { }
+    static inline void reportThreadAction(int, int, QDBusConnectionPrivate *, void *) { }
 #endif
 };
 
@@ -137,16 +137,16 @@ struct QDBusReadLocker: QDBusLockerBase
     inline QDBusReadLocker(ThreadAction a, QDBusConnectionPrivate *s)
         : self(s), action(a)
     {
-        reportThreadAction(action, BeforeLock, self);
+        reportThreadAction(action, BeforeLock, self, &self->lock);
         self->lock.lockForRead();
-        reportThreadAction(action, AfterLock, self);
+        reportThreadAction(action, AfterLock, self, &self->lock);
     }
 
     inline ~QDBusReadLocker()
     {
-        reportThreadAction(action, BeforeUnlock, self);
+        reportThreadAction(action, BeforeUnlock, self, &self->lock);
         self->lock.unlock();
-        reportThreadAction(action, AfterUnlock, self);
+        reportThreadAction(action, AfterUnlock, self, &self->lock);
     }
 };
 
@@ -157,16 +157,16 @@ struct QDBusWriteLocker: QDBusLockerBase
     inline QDBusWriteLocker(ThreadAction a, QDBusConnectionPrivate *s)
         : self(s), action(a)
     {
-        reportThreadAction(action, BeforeLock, self);
+        reportThreadAction(action, BeforeLock, self, &self->lock);
         self->lock.lockForWrite();
-        reportThreadAction(action, AfterLock, self);
+        reportThreadAction(action, AfterLock, self, &self->lock);
     }
 
     inline ~QDBusWriteLocker()
     {
-        reportThreadAction(action, BeforeUnlock, self);
+        reportThreadAction(action, BeforeUnlock, self, &self->lock);
         self->lock.unlock();
-        reportThreadAction(action, AfterUnlock, self);
+        reportThreadAction(action, AfterUnlock, self, &self->lock);
     }
 };
 
@@ -179,16 +179,16 @@ struct QDBusMutexLocker: QDBusLockerBase
                             QMutex *m)
         : self(s), mutex(m), action(a)
     {
-        reportThreadAction(action, BeforeLock, self);
+        reportThreadAction(action, BeforeLock, self, mutex);
         mutex->lock();
-        reportThreadAction(action, AfterLock, self);
+        reportThreadAction(action, AfterLock, self, mutex);
     }
 
     inline ~QDBusMutexLocker()
     {
-        reportThreadAction(action, BeforeUnlock, self);
+        reportThreadAction(action, BeforeUnlock, self, mutex);
         mutex->unlock();
-        reportThreadAction(action, AfterUnlock, self);
+        reportThreadAction(action, AfterUnlock, self, mutex);
     }
 };
 
@@ -202,16 +202,16 @@ struct QDBusDispatchLocker: QDBusMutexLocker
 #if QDBUS_THREAD_DEBUG
 # define SEM_ACQUIRE(action, sem)                                       \
     do {                                                                \
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeAcquire, this); \
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeAcquire, this, &sem); \
     sem.acquire();                                                      \
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterAcquire, this); \
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterAcquire, this, &sem); \
     } while (0)
 
 # define SEM_RELEASE(action, sem)                                       \
     do {                                                                \
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeRelease, that); \
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeRelease, that, &sem); \
     sem.release();                                                      \
-    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterRelease, that); \
+    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterRelease, that, &sem); \
     } while (0)
 
 #else
