Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.9.0, 5.11.0
-
None
-
38bac80aea1c2bd58acb10000e9a3daa65bba503 (qt/qtdeclarative/5.12)
Description
I'm trying to use QMetaObject::invokeMethod with QueuedConnection to safely pass control from one thread to another. If invokeMethod (on a secondary thread) happens simultaneously with QQmlPropertyMap::insert (on main thread), Qt may crash. There seems to be no locking around the code which modifies the QMetaObject.
If it's not fixable, then it should at least be documented what conditions need to be met in order to safely use invokeMethod with QueuedConnection from a different thread.
Minimal test-case attached.