Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.12
-
None
-
6d3a4546934827955f0eb2b07a9928f82790ba37 (qt/qtbase/5.12) 2ed7831ff636f4fbaec27524d416d63c2fd773bf (qt/qtbase/5.9)
Description
The issue seems to occur when `void tst_QDBusConnection::connectToPeer()` fails on ` QVERIFY(con.isConnected());` after ` QDBusConnection::disconnectFromBus("bubu");`. That causes a 'return' and the server is starts destructing.
QDBusServer::~QDBusServer() locks `d->lock` followed by `QDBusConnectionManager::instance()->mutex`.
`static void qDBusNewConnection(DBusServer *server, DBusConnection *connection, void *data)` locks the same locks, but in the opposite order.
Attachments
For Gerrit Dashboard: QTBUG-74635 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
270393,12 | DBus: fix deadlock when destroying QDBusServer | 5.12 | qt/qtbase | Status: MERGED | +2 | 0 |
270503,1 | DBus: fix deadlock when destroying QDBusServer | dev | qt/qtbase | Status: ABANDONED | 0 | 0 |
271252,10 | DBus: fix deadlock when destroying QDBusServer | 5.9 | qt/qtbase | Status: MERGED | +2 | 0 |