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

Details

    • 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)

    Description

      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.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: