Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-100775 Several data races around handlers of QDesktopServices::openUrl()
  3. QTBUG-100778

ABA problem in invoking QOpenUrlHandlerRegistry::handlerDestroyed()

XMLWordPrintable

    • Team Two Foundation Sprint 51
    • f482e2a456 (qt/qtbase/dev) 4114c1163b (qt/qtbase/6.2) e0babf6c2d (qt/qtbase/6.3) 4114c1163b (qt/tqtc-qtbase/6.2) 059c8f9381 (qt/tqtc-qtbase/5.15)

      When the handler QObject and the registry QObject aren't on the same thread, then the connect() from the handler's destroyed() signal to the registry's handlerDestroyed() slot has QueuedConnection semantics, which means two things:

      1. there's a window in which the handler is (partially, or even fully) destroyed, but remains in the registry and can be invoked by openUrl() calls
      2. If one handler is destroyed and another one immediately created and registered, the new handler may have the same address as the old one, and the delayed execution of handlerDestoyed() will remove the entries for the new handler.

        For Gerrit Dashboard: QTBUG-100778
        # Subject Branch Project Status CR V

            mmutz Marc Mutz
            mmutz Marc Mutz
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes