Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-129388

Compilation Units are not completely released on engine destruction

    XMLWordPrintable

Details

    • 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

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              ulherman Ulf Hermann
              ulherman Ulf Hermann
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: