-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.9
-
None
-
-
a8ccd2ee9 (dev)
-
Multimedia, weeks 15-16
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
- relates to
-
QTBUG-138248 Crash in QtPipeWire::SpaObjectAudioFormat::parse
-
- Closed
-
| For Gerrit Dashboard: QTBUG-135312 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V |
| 637326,7 | Pipewire: improve handling for format_pod failures | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |