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

Crash in QtMultimedia pipewire

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.9
    • Multimedia
    • None
    • Linux/Wayland

    Description

      Logging output:

      11:52:39.670 qt.multimedia.pipewire.devicemonitor: QtPipeWire::QAudioDeviceMonitor::objectAdded added device 368 "Navi 21/23 HDMI/DP Audio Controller"
      11:52:39.670 qt.multimedia.pipewire.devicemonitor: QtPipeWire::QAudioDeviceMonitor::objectAdded added device 369 "Starship/Matisse HD Audio Controller"
      11:52:39.670 qt.multimedia.pipewire.devicemonitor: QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)> added node for device  373 368
      

      Backtrace

      Thread 179 "QAudioContext" received signal SIGSEGV, Segmentation fault.
      [Switching to Thread 0x7ffe4affd6c0 (LWP 69769)]
      QtPipeWire::(anonymous namespace)::parseSampleFormat (pod=...) at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_spa_pod_support.cpp:33
      33          if (spa_pod_is_choice(format_pod)) {
      (gdb) bt
      #0  QtPipeWire::(anonymous namespace)::parseSampleFormat (pod=...) at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_spa_pod_support.cpp:33
      #1  0x00007ffff3b40372 in QtPipeWire::SpaObjectAudioFormat::parse (obj=0x555557027610) at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_spa_pod_support.cpp:99
      #2  0x00007ffff3b40507 in QtPipeWire::SpaObjectAudioFormat::parse (pod=<optimized out>) at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_spa_pod_support.cpp:125
      #3  0x00007ffff3b2c5c4 in operator() (__closure=0x7ffe60003a40, param=<optimized out>) at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_audiodevicemonitor.cpp:499
      #4  0x00007ffff3b2c643 in std::__invoke_impl<void, QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord::PendingNodeRecord(QtPipeWire::ObjectId, QtPipeWire::ObjectSerial, QtPipeWire::ObjectSerial, QtPipeWire::PwPropertyDict)::<lambda(int, uint32_t, uint32_t, uint32_t, const spa_pod*)>&, int, unsigned int, unsigned int, unsigned int, const spa_pod*> (__f=<optimized out>) at /usr/include/c++/14.2.1/bits/invoke.h:61
      #5  std::__invoke_r<void, QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord::PendingNodeRecord(QtPipeWire::ObjectId, QtPipeWire::ObjectSerial, QtPipeWire::ObjectSerial, QtPipeWire::PwPropertyDict)::<lambda(int, uint32_t, uint32_t, uint32_t, const spa_pod*)>&, int, unsigned int, unsigned int, unsigned int, const spa_pod*> (__fn=<optimized out>) at /usr/include/c++/14.2.1/bits/invoke.h:111
      #6  std::_Function_handler<void(int, unsigned int, unsigned int, unsigned int, const spa_pod*), QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord::PendingNodeRecord(QtPipeWire::ObjectId, QtPipeWire::ObjectSerial, QtPipeWire::ObjectSerial, QtPipeWire::PwPropertyDict)::<lambda(int, uint32_t, uint32_t, uint32_t, const spa_pod*)> >::_M_invoke(const std::_Any_data &, int &&, unsigned int &&, unsigned int &&, unsigned int &&, const spa_pod *&&)
          (__functor=<optimized out>, __args#0=<optimized out>, __args#1=<optimized out>, __args#2=<optimized out>, __args#3=<optimized out>, __args#4=<optimized out>) at /usr/include/c++/14.2.1/bits/std_function.h:290
      #7  0x00007ffff3b2411b in std::function<void(int, unsigned int, unsigned int, unsigned int, spa_pod const*)>::operator()
          (this=<optimized out>, __args#0=<optimized out>, __args#1=<optimized out>, __args#2=<optimized out>, __args#3=<optimized out>, __args#4=<optimized out>) at /usr/include/c++/14.2.1/bits/std_function.h:591
      #8  0x00007ffff3b23cfa in QtPipeWire::NodeEventListener::onParam (data=<optimized out>, seq=<optimized out>, id=<optimized out>, index=<optimized out>, next=<optimized out>, param=<optimized out>)
          at /home/david/projects/kde6/src/qtmultimedia/src/multimedia/pipewire/qpipewire_async_support.cpp:69
      #9  0x00007ffe9cdcf314 in port_demarshal_param (data=<optimized out>, msg=<optimized out>) at ../pipewire/src/modules/module-protocol-native/protocol-native.c:1440
      #10 0x00007ffe9cdbf204 in process_remote (impl=impl@entry=0x5555564781d0) at ../pipewire/src/modules/module-protocol-native.c:1095
      #11 0x00007ffe9cdbf8b8 in on_remote_data (data=0x5555564781d0, fd=78, mask=1) at ../pipewire/src/modules/module-protocol-native.c:1129
      #12 0x00007fff16fe4d66 in loop_iterate (object=0x555558711648, timeout=<optimized out>) at ../pipewire/spa/plugins/support/loop.c:726
      #13 0x00007fffecbb3fd7 in spa_loop_control_iterate_fast (object=<optimized out>, timeout=-1) at ../pipewire/spa/include/spa/support/loop.h:309
      #14 pw_loop_iterate (object=<optimized out>, timeout=-1) at ../pipewire/src/pipewire/loop.h:89
      
      

      Steps to reproduce (if you have KDE). Open spectacle, make a recording, when it goes to load the preview of the recorded output, it breaks.

      I could probably try and save that and run it in a minimal example if needed

      Attachments

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

        Activity

          People

            timblechmann tim blechmann
            davidedmundson David Edmundson
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes