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

BIC: Changed QRhi::create() signature

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P1: Critical P1: Critical
    • 6.10.0 Beta4
    • 6.10.0 Beta3
    • Qt RHI, WebEngine
    • None
    • be840571d (6.10)

      When trying to run the simplebrowser example with Qt 6.10.0 installed via MaintenanceTool, I get:

      ./simplebrowser: symbol lookup error: .../qt/bin/6.10.0/gcc_64/lib/libQt6WebEngineCore.so.6: undefined symbol: _ZN4QRhi6createENS_14ImplementationEP14QRhiInitParams6QFlagsINS_4FlagEEP17QRhiNativeHandles, version Qt_6_PRIVATE_API
      

      Demangled this is QRhi::create(QRhi::Implementation, QRhiInitParams*, QFlags<QRhi::Flag>, QRhiNativeHandles*), but only the symbol without the added last argument is present:

      $ nm -gDC .../qt/bin/6.10.0/gcc_64/lib/libQt6Gui.so.6.10.0 | grep QRhi::create
      0000000000468500 T QRhi::create(QRhi::Implementation, QRhiInitParams*, QFlags<QRhi::Flag>, QRhiNativeHandles*, QRhiAdapter*)@@Qt_6_PRIVATE_API
      

       
      From what I understand, this changed in rhi: Introduce a way to enumerate adapters/physical devices (615647) · Gerrit Code Review (but none of the calls in src/core/web_engine_context.cpp pass that last argument).

      From Policies/Binary Compatibility Issues With C++ - KDE Community Wiki:

      you cannot... Change its signature. This includes: [...] Extending a function with another parameter, even if this parameter has a default argument. See below for a suggestion on how to avoid this issue

       

      But given this is private API, maybe it's QtWebEngine which needs to adjust to the new usage?

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

            lagocs Laszlo Agocs
            the compiler Florian Bruhin
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes