Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
5.12.6, 5.15.1, 6.0.0
-
None
Description
When a Python QML type registered with qmlRegisterType gets destroyed in the QML context (e.g. by using a loader), the Python object is not getting garbage collected.
I have attached a minimal example. To reproduce hit the "Toggle" button three times. At this point there are two objects in the WeakSet, but one of these objects were already deleted at the second toggle click (destroyed signal was emitted).
You can see in the output from objgraph, that the Python object has only 2 strong references in the current frame (and none other in Python), but the refcount is 5. So there has to be some some ref counting errors in C++ / shiboken.
Tested on Windows, but other platforms are probably affected, too.