import gc
import sys
from PySide6.QtCore import QLibraryInfo, Qt, QObject, Signal


class X(QObject):
    signal = Signal()

    def callback(self):
        pass


if __name__ == '__main__':
    print('Python {}.{}'.format(sys.version_info[0], sys.version_info[1]))
    print(QLibraryInfo.build())
    child = X()
    child.setObjectName("child")
    parent = X()
    parent.setObjectName("parent")
    parent._child = child
    child._parent = parent
    meta = child.signal.connect(parent.callback)
    print('before gc del child')
    del child
    print('before gc del parent')
    del parent
    print('before gc.collect()')
    # uncomment to fix segfault
    # QObject.disconnect(meta)
    gc.collect()
