diff options
author | MÃ¥rten Nordheim <marten.nordheim@qt.io> | 2019-08-16 15:49:42 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2019-08-19 07:27:45 +0000 |
commit | e9eddfd85628f0ec672895652c67443caa160b7b (patch) | |
tree | fcbfb6cd0205a07a82feff0f4e028a853e605d3d /src/testlib/qtestevent.qdoc | |
parent | 77160d29234fe9ea570a515f32f53f864c947e4d (diff) |
Fix rare double-free in QObject machinery
As exposed by tst_QObjectRace::destroyRace we would sometimes end up
with a double-free when destroying a QSlotObject in multi-threaded
scenarios. One free would be done in ~QObject as the receiver was being
destroyed while the other free was done when deleting a QMetaCallEvent
object after we realized it was not needed because the receiver was
destroyed.
Since we can be in a separate thread from the receiver we should lock
before referencing the connection object.
Amends b7d073e9905bf9812ba96cecdcf6871a95517d30.
Change-Id: Icb53862dc880ae9a4e5581a1a9ee693573f7d9c7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/testlib/qtestevent.qdoc')
0 files changed, 0 insertions, 0 deletions