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

[Mac] AMD Metal Crash from QWidgetRepaintManager::flush()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Incomplete
    • P1: Critical
    • None
    • 6.5.6
    • Qt RHI
    • macOS Monterey, Ventura, Sonoma but on on Intel Macs. Qt 6.5.6 built with Xcode 14.2 and macOS SDK 13.1 minimum deployment OS 11.
    • macOS

    Description

      Our application is running in a loop playing video through a custom video player. Periodically, the playback engine gives time back to the main thread to update the UI. At some point the application crashes in QWidgetRepaintManager::flush(), but only in Intel Macs with AMD graphics. Macs with Apple SoC and Windows systems run for many hours without any issues.

      Here is a snippet from a typical stack where the failure is happening on all Intel-based Macs

      50  libsystem_platform.dylib      	    0x7ff815aebe9d _sigtramp + 29\
      51  ???                           	               0x0 ???\
      52  AMDRadeonX5000MTLDriver       	    0x7ffb1a6fa97f amdMtl_CmdBuffer_BeginEncoder(GFX9AMD_MtlCmdBuffer*) + 117\
      53  AMDRadeonX5000MTLDriver       	    0x7ffb1a79ca63 -[GFX9_MtlRenderCmdEncoder initWithCommandBuffer:descriptor:] + 2236\
      54  AMDRadeonX5000MTLDriver       	    0x7ffb1a767363 -[GFX9_MtlCmdBuffer renderCommandEncoderWithDescriptor:] + 57\
      55  QtGui                         	       0x114a4cebb QRhiMetal::beginPass(QRhiCommandBuffer*, QRhiRenderTarget*, QColor const&, QRhiDepthStencilClearValue const&, QRhiResourceUpdateBatch*, QFlags<QRhiCommandBuffer::BeginPassFlag>) + 2299\
      56  QtGui                         	       0x11481305b QRhiCommandBuffer::beginPass(QRhiRenderTarget*, QColor const&, QRhiDepthStencilClearValue const&, QRhiResourceUpdateBatch*, QFlags<QRhiCommandBuffer::BeginPassFlag>) + 43\
      57  QtGui                         	       0x1146b3048 QBackingStoreDefaultCompositor::flush(QPlatformBackingStore*, QRhi*, QRhiSwapChain*, QWindow*, double, QRegion const&, QPoint const&, QPlatformTextureList*, bool)::$_0::operator()(std::__1::optional<QRhiSwapChain::StereoTargetBuffer>) const + 120\
      58  QtGui                         	       0x1146b2b77 QBackingStoreDefaultCompositor::flush(QPlatformBackingStore*, QRhi*, QRhiSwapChain*, QWindow*, double, QRegion const&, QPoint const&, QPlatformTextureList*, bool) + 5495\
      59  QtGui                         	       0x1147d4649 QPlatformBackingStore::rhiFlush(QWindow*, double, QRegion const&, QPoint const&, QPlatformTextureList*, bool) + 105\
      60  QtWidgets                     	       0x1167a97da QWidgetRepaintManager::flush(QWidget*, QRegion const&, QPlatformTextureList*) + 1738\
      61  QtWidgets                     	       0x1167abea0 QWidgetRepaintManager::flush() + 576\
      62  QtWidgets                     	       0x1167aae48 QWidgetRepaintManager::paintAndFlush() + 5096\
      63  QtWidgets                     	       0x1167ab10f QWidgetRepaintManager::sync() + 255\
      64  QtWidgets                     	       0x116798825 QWidget::event(QEvent*) + 1813\
      

      This is a critical issue that is blocking us from upgrading our applications from Qt 5.15 to 6.5.

      Attachments

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

        Activity

          People

            vestbo Tor Arne Vestbø
            tom.ransdell Tom Ransdell
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes