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

[darwin] Sporadic crashes on QMediaPlayer destuction

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • 6.8.2, 6.9.0 FF
    • 6.7.3, 6.8.0
    • Multimedia
    • None
    • MacBook Pro 16" (M1 Pro, 2021)
      MacBook Air 13" (M1, 2020)
      Mac15,12
      etc.

      Different macOS versions, 12.5 - 15.0

    • macOS
    • 2c316575c (dev), 424dd8f4b (6.8), 8352e255e (dev), 1a5f0e6fd (dev), b6b378b1e (6.8), f0969f356 (6.8)
    • Multimedia wk 43-44, Multimedia wk 47-48, Multimedia wk 49-50

    Description

      We've never reproduced this locally, I just found such crashes in our automated tracking system.

      Exception Type:  SIGSEGV
      Exception Codes: SEGV_MAPERR at 0x6fe88c1e8f50
      Crashed Thread:  61
      
      Thread 61 Crashed:
      0   libobjc.A.dylib                      0x000000019801bfbc objc_retain + 16
      1   MediaToolbox                         0x00000001a7a03e9c FPSupport_CopyCAContext + 11072
      2   MediaToolbox                         0x00000001a7919b68 FigPlayerAsyncDispatchToPlayerQueue + 132972
      3   MediaToolbox                         0x00000001a7916178 FigPlayerAsyncDispatchToPlayerQueue + 118140
      4   MediaToolbox                         0x00000001a792819c FigPlayerAsyncDispatchToPlayerQueue + 191904
      5   MediaToolbox                         0x00000001a7925674 FigPlayerAsyncDispatchToPlayerQueue + 180856
      6   MediaToolbox                         0x00000001a7956704 FigPlayerAsyncDispatchToPlayerQueue + 381704
      7   libdispatch.dylib                    0x00000001982423e8 _dispatch_client_callout + 16
      8   libdispatch.dylib                    0x0000000198249a14 _dispatch_lane_serial_drain + 744
      9   libdispatch.dylib                    0x000000019824a578 _dispatch_lane_invoke + 428
      10  libdispatch.dylib                    0x0000000198253ea8 _dispatch_root_queue_drain + 388
      11  libdispatch.dylib                    0x0000000198253c38 _dispatch_worker_thread + 256
      12  libsystem_pthread.dylib              0x00000001983f2f94 _pthread_start + 132
      13  libsystem_pthread.dylib              0x00000001983edd34 thread_start + 4
      
      Thread 0:
      0   libsystem_kernel.dylib               0x00000001983b4ea4 __psynch_mutexwait + 8
      1   libsystem_pthread.dylib              0x00000001983ed9f0 _pthread_mutex_firstfit_lock_slow + 244
      2   MediaToolbox                         0x00000001a7931dfc FigPlayerAsyncDispatchToPlayerQueue + 231936
      3   MediaToolbox                         0x00000001a793a1c4 FigPlayerAsyncDispatchToPlayerQueue + 265672
      4   MediaToolbox                         0x00000001a7a0a380 FPSupport_GetMainDisplayVideoRangeAndSizeAndFrameRate + 13632
      5   MediaToolbox                         0x00000001a7a0a298 FPSupport_GetMainDisplayVideoRangeAndSizeAndFrameRate + 13400
      6   MediaToolbox                         0x00000001a7d9dccc FigPlayerSurrogateCreate + 2508
      7   MediaToolbox                         0x00000001a7ae31e0 FigPlayerAirPlayCreate + 3940
      8   MediaToolbox                         0x00000001a7a4e28c FigPlayerCentralCreate + 3508
      9   MediaToolbox                         0x00000001a7a0a53c FPSupport_GetMainDisplayVideoRangeAndSizeAndFrameRate + 14076
      10  MediaToolbox                         0x00000001a78fa504 FigPlayerAsyncDispatchToPlayerQueue + 4360
      11  MediaToolbox                         0x00000001a78fa2f4 FigPlayerAsyncDispatchToPlayerQueue + 3832
      12  libdispatch.dylib                    0x00000001982423e8 _dispatch_client_callout + 16
      13  libdispatch.dylib                    0x00000001982518d8 _dispatch_lane_barrier_sync_invoke_and_complete + 52
      14  MediaToolbox                         0x00000001a78fd28c FigPlayerAsyncDispatchToPlayerQueue + 16016
      15  MediaToolbox                         0x00000001a7a0a380 FPSupport_GetMainDisplayVideoRangeAndSizeAndFrameRate + 13632
      16  MediaToolbox                         0x00000001a7a0a298 FPSupport_GetMainDisplayVideoRangeAndSizeAndFrameRate + 13400
      17  MediaToolbox                         0x00000001a78f98f4 FigPlayerAsyncDispatchToPlayerQueue + 1272
      18  AVFCore                              0x00000001addaa8ec __69-[AVPlayer(AVPlayerAudioDeviceSupport) setAudioOutputDeviceUniqueID:]_block_invoke_2 + 184
      19  libdispatch.dylib                    0x00000001982423e8 _dispatch_client_callout + 16
      20  libdispatch.dylib                    0x00000001982518d8 _dispatch_lane_barrier_sync_invoke_and_complete + 52
      21  AVFCore                              0x00000001addaa7d8 -[AVPlayer(AVPlayerAudioDeviceSupport) setAudioOutputDeviceUniqueID:] + 244
      22  libdarwinmediaplugin.dylib           0x000000035c07cd34 AVFMediaPlayer::updateAudioOutputDevice() (avfmediaplayer.mm:945)
      23  libdarwinmediaplugin.dylib           0x000000035c07e9b4 AVFMediaPlayer::setAudioOutput(QPlatformAudioOutput*) (avfmediaplayer.mm:759)
      24  QtMultimedia                         0x0000000106910ae8 QMediaPlayer::setAudioOutput(QAudioOutput*) (qmediaplayer.cpp:678)
      25  QtMultimedia                         0x00000001069109f0 QMediaPlayer::~QMediaPlayer() (qmediaplayer.cpp:251)
      26  QtMultimediaQuick                    0x000000035c5ed7dc QQmlPrivate::QQmlElement<QQuickMediaPlayer>::~QQmlElement() (qquickmediaplayer_p.h:26)
      27  QtCore                               0x0000000108f73968 QObject::event(QEvent*) (qobject.cpp:5002)
      ...
      

      Update:
      I was able to reproduce this crash few times with the following code sample

      import QtQuick
      import QtMultimedia
      
      Window {
          width: 640
          height: 480
          visible: true
      
          VideoOutput {
              id: output
              anchors.fill: parent
          }
      
          Loader {
              id: loader
              sourceComponent: MediaPlayer {
                  videoOutput: output
                  audioOutput: AudioOutput {}
                  autoPlay: true
                  source: 'https://raw.githubusercontent.com/mediaelement/mediaelement-files/refs/heads/master/echo-hereweare.mp4'
              }
          }
      
          Timer {
              id: timer
              repeat: true
              interval: 300
              running: true
              onTriggered: {
                  loader.active = false
                  loader.active = true
              }
          }
      }
      

      But it crashes really spontaneously, so don’t expect it to crash right away.

      Attachments

        Issue Links

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

          Activity

            People

              tpochep Timur Pocheptsov
              studiosus Vladimir Belyavsky
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: