Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.8
-
76ce5e479 (dev), f8cdbfc3a (6.8), 1faa47150 (6.8.0), 0abdcda8f (dev), 7f58f05a4 (dev), 5893b9851 (dev), b248d2818 (dev), 336f86daa (dev)
Description
The log seen in QTBUG-129052 proves that some compilation units sometimes survive the engine destruction performed as part of the test cleanup by the QtQuickTest. This shouldn't happen. When the (last) engine is gone, nothing should be able to hold on to any of its CUs anymore. The difficulty is in finding a reliable reproducer.
In particular, the AOT-compiled C++ code holds on to dynamic QMetaTypeInterface pointers from other compilation units that do get released. This is because we generate static variables of QMetaType into the C++ code. This leads to heap-use-after-free when the CU (or even only the AOT-compiled code) is re-used.
Attachments
Issue Links
- split from
-
QTBUG-129052 controls tests are flaky since https://codereview.qt-project.org/c/qt/qtdeclarative/+/589582
-
- Closed
-