Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
None
-
6.8
-
4c76077e0 (6.7), 9e384f12b (dev), d1ac355c6 (tqtc/lts-6.5), 2037ba7a5 (dev), 29e8c757d (6.8), e9c4ce698 (tqtc/lts-6.5)
Description
i'm seeing a spurious assertion failure inside gstreamer with the unit tests:
tst_qmediaplayerbackend -maxwarnings 100000 setSource_changesSourceAndMediaStatus_whenCalledWithValidFile -repeat 100
gives me:
gst_base_src_set_format: assertion 'GST_STATE (src) <= GST_STATE_READY' failed
this happens in the gstreamer thread
1 g_logv (x86_64) /lib/x86_64-linux-gnu/libglib-2.0.so.0 0x7ffff2d196a1 2 g_log (x86_64) /lib/x86_64-linux-gnu/libglib-2.0.so.0 0x7ffff2d19953 3 gst_base_src_set_format gstbasesrc.c 644 0x7fffea9b4648 4 gst_app_src_start gstappsrc.c 1096 0x7fffeb1b16fa 5 gst_base_src_start gstbasesrc.c 3570 0x7fffea9bfa93 6 gst_base_src_activate_pull gstbasesrc.c 3994 0x7fffea9c0042 7 gst_base_src_activate_mode gstbasesrc.c 4029 0x7fffea9baeab 8 activate_mode_internal gstpad.c 1224 0x7fffe7b07ffe 9 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 10 activate_mode_internal gstpad.c 1192 0x7fffe7b07eeb 11 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 12 gst_ghost_pad_internal_activate_pull_default gstghostpad.c 302 0x7fffe7aebf96 13 gst_ghost_pad_internal_activate_mode_default gstghostpad.c 344 0x7fffe7aebcc6 14 activate_mode_internal gstpad.c 1224 0x7fffe7b07ffe 15 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 16 activate_mode_internal gstpad.c 1192 0x7fffe7b07eeb 17 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 18 gst_type_find_element_activate_src_mode gsttypefindelement.c 1090 0x7fffe9be5705 19 activate_mode_internal gstpad.c 1224 0x7fffe7b07ffe 20 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 21 activate_mode_internal gstpad.c 1192 0x7fffe7b07eeb 22 gst_pad_activate_mode gstpad.c 1329 0x7fffe7b0872f 23 qtdemux_sink_activate qtdemux.c 8591 0x7fffe4e54bb2 24 gst_pad_set_active gstpad.c 1107 0x7fffe7b078f5 25 activate_pads gstelement.c 3189 0x7fffe7ae0bd7 26 gst_iterator_fold gstiterator.c 618 0x7fffe7af97a2 27 iterator_activate_fold_with_resync gstelement.c 3213 0x7fffe7ae0b25 28 gst_element_pads_activate gstelement.c 3258 0x7fffe7ae094b 29 gst_element_change_state_func gstelement.c 3309 0x7fffe7adf0b1 30 gst_qtdemux_change_state qtdemux.c 2681 0x7fffe4e53c3e 31 gst_element_change_state gstelement.c 3101 0x7fffe7adce93 32 gst_element_set_state_func gstelement.c 3055 0x7fffe7adf775 33 gst_element_set_state gstelement.c 2956 0x7fffe7adc512 34 connect_pad gstdecodebin2.c 2576 0x7fffe4f59856 35 analyze_new_pad gstdecodebin2.c 1908 0x7fffe4f565de 36 type_found gstdecodebin2.c 2945 0x7fffe4f54ae5 37 ___lldb_unnamed_symbol145 (x86_64) /lib/x86_64-linux-gnu/libffi.so.8 0x7fffea77ab16 38 ___lldb_unnamed_symbol138 (x86_64) /lib/x86_64-linux-gnu/libffi.so.8 0x7fffea7773ef 39 ffi_call (x86_64) /lib/x86_64-linux-gnu/libffi.so.8 0x7fffea77a0be 40 g_cclosure_marshal_generic (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7b8db2 41 g_closure_invoke (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7b22fa 42 ___lldb_unnamed_symbol1329 (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7e190c 43 ___lldb_unnamed_symbol1162 (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7d2591 44 g_signal_emit_valist (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7d27c1 45 g_signal_emit (x86_64) /lib/x86_64-linux-gnu/libgobject-2.0.so.0 0x7fffea7d2883 46 gst_type_find_element_emit_have_type gsttypefindelement.c 239 0x7fffe9be6d85 47 gst_type_find_element_loop gsttypefindelement.c 1195 0x7fffe9be6272 48 gst_task_func gsttask.c 399 0x7fffe7b65705 49 default_func gsttaskpool.c 70 0x7fffe7b6670a 50 ___lldb_unnamed_symbol2711 (x86_64) /lib/x86_64-linux-gnu/libglib-2.0.so.0 0x7ffff2d48542 51 ___lldb_unnamed_symbol2690 (x86_64) /lib/x86_64-linux-gnu/libglib-2.0.so.0 0x7ffff2d42c82 52 asan_thread_start(void *) (x86_64) /home/tim/build/build-qt6-dev-clang_18_qt_dev-Debug2/qtmultimedia/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend 0x55555563d42d 53 start_thread pthread_create.c 447 0x7fffede9ca94 54 __clone3 clone3.S 78 0x7fffedf29c3c
while the application thread sets the pipeline state to NULL:
1 futex_wait futex-internal.h 146 0x7fffede98f60 2 __GI___lll_lock_wait lowlevellock.c 49 0x7fffede98f4a 3 lll_mutex_lock_optimized pthread_mutex_lock.c 48 0x7fffedea0147 4 ___pthread_mutex_lock pthread_mutex_lock.c 128 0x7fffedea0131 5 gst_pad_stop_task gstpad.c 6514 0x7fffe7b1bc8a 6 gst_type_find_element_activate_sink_mode gsttypefindelement.c 1288 0x7fffe9be5000 7 activate_mode_internal gstpad.c 1224 0x7fffe7b07ffe 8 gst_pad_set_active gstpad.c 1122 0x7fffe7b07a88 9 activate_pads gstelement.c 3189 0x7fffe7ae0bd7 10 gst_iterator_fold gstiterator.c 618 0x7fffe7af97a2 11 iterator_activate_fold_with_resync gstelement.c 3213 0x7fffe7ae0b25 12 gst_element_pads_activate gstelement.c 3258 0x7fffe7ae094b 13 gst_element_change_state_func gstelement.c 3323 0x7fffe7adf0db 14 gst_type_find_element_change_state gsttypefindelement.c 1353 0x7fffe9be4cfe 15 gst_element_change_state gstelement.c 3101 0x7fffe7adce93 16 gst_element_set_state_func gstelement.c 3055 0x7fffe7adf775 17 gst_element_set_state gstelement.c 2956 0x7fffe7adc512 18 gst_bin_element_set_state gstbin.c 2582 0x7fffe7aa66c9 19 gst_bin_change_state_func gstbin.c 2934 0x7fffe7aa082c 20 gst_decode_bin_change_state gstdecodebin2.c 5500 0x7fffe4f5139c 21 gst_element_change_state gstelement.c 3101 0x7fffe7adce93 22 gst_element_set_state_func gstelement.c 3055 0x7fffe7adf775 23 gst_element_set_state gstelement.c 2956 0x7fffe7adc512 24 gst_bin_element_set_state gstbin.c 2582 0x7fffe7aa66c9 25 gst_bin_change_state_func gstbin.c 2934 0x7fffe7aa082c 26 gst_pipeline_change_state gstpipeline.c 534 0x7fffe7b23e06 27 gst_element_change_state gstelement.c 3101 0x7fffe7adce93 28 gst_element_set_state_func gstelement.c 3055 0x7fffe7adf775 29 gst_element_set_state gstelement.c 2956 0x7fffe7adc512 30 QGstElement::setStateSync(GstState, std::chrono::duration<long, std::ratio<1l, 1000000000l>>) qgst.cpp 949 0x7fffe4cf5ecb 31 QGstreamerMediaPlayer::~QGstreamerMediaPlayer() qgstreamermediaplayer.cpp 154 0x7fffe4d2b879 32 QGstreamerMediaPlayer::~QGstreamerMediaPlayer() qgstreamermediaplayer.cpp 151 0x7fffe4d2bb0d 33 non-virtual thunk to QGstreamerMediaPlayer::~QGstreamerMediaPlayer() qgstreamermediaplayer.cpp 0x7fffe4d2bb3d 34 QMediaPlayer::~QMediaPlayer() qmediaplayer.cpp 254 0x7ffff779e7de 35 Fixture::~Fixture() fixture.h 17 0x555555682cd7 36 Fixture::~Fixture() fixture.h 17 0x555555682d0d 37 std::default_delete<Fixture>::operator()(Fixture *) const unique_ptr.h 93 0x5555558b5117 38 std::__uniq_ptr_impl<Fixture, std::default_delete<Fixture>>::reset(Fixture *) unique_ptr.h 205 0x5555558b5ff2 39 std::unique_ptr<Fixture, std::default_delete<Fixture>>::reset(Fixture *) unique_ptr.h 503 0x5555558b60e1 40 std::unique_ptr<Fixture, std::default_delete<Fixture>>::operator=(std::nullptr_t) unique_ptr.h 436 0x5555558b60b5 41 tst_QMediaPlayerBackend::cleanup() tst_qmediaplayerbackend.cpp 82 0x55555587e7f4 42 tst_QMediaPlayerBackend::qt_static_metacall(QObject *, QMetaObject::Call, int, void * *) tst_qmediaplayerbackend.moc 537 0x5555557a1761 43 QMetaMethodInvoker::invokeImpl(QMetaMethod, void *, Qt::ConnectionType, long long, void const * const *, const char * const *, QtPrivate::QMetaTypeInterface const * const *) qmetaobject.cpp 2754 0x7fffeeb7eab4 44 QMetaMethod::invokeImpl(QMetaMethod, void *, Qt::ConnectionType, long long, void const * const *, const char * const *, QtPrivate::QMetaTypeInterface const * const *) qmetaobject.cpp 2593 0x7fffeeb90044 45 std::enable_if<!AreOldStyleArgs<>::value, bool>::type QMetaMethod::invoke<void>(QObject *, Qt::ConnectionType, QTemplatedMetaMethodReturnArgument<void>) const qmetaobject.h 148 0x7ffff7cc1edf 46 std::enable_if<!AreOldStyleArgs<>::value, bool>::type QMetaMethod::invoke<>(QObject *, Qt::ConnectionType) const qmetaobject.h 160 0x7ffff7cc1c5a 47 QTest::invokeTestMethodIfValid(QMetaMethod, QObject *) qtestcase.cpp 448 0x7ffff7c9e410 48 QTest::TestMethods::invokeTestOnData(int) const qtestcase.cpp 1099 0x7ffff7c9d792 49 QTest::TestMethods::invokeTest(int, QLatin1String, std::optional<QTest::WatchDog>&) const qtestcase.cpp 1388 0x7ffff7c9f7f1 50 QTest::TestMethods::invokeTests(QObject *) const qtestcase.cpp 1725 0x7ffff7ca3e48 51 QTest::qRun() qtestcase.cpp 1930 0x7ffff7ca562c 52 QTest::qExec(QObject *, int, char * *) qtestcase.cpp 1808 0x7ffff7ca42c3 53 main tst_qmediaplayerbackend.cpp 3098 0x5555557a1507 54 __libc_start_call_main libc_start_call_main.h 58 0x7fffede2a1ca 55 __libc_start_main_impl libc-start.c 360 0x7fffede2a28b 56 _start (x86_64) /home/tim/build/build-qt6-dev-clang_18_qt_dev-Debug2/qtmultimedia/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend 0x5555555a4af5
It seems to be a gstreamer upstream bug
Attachments
Issue Links
- links to
For Gerrit Dashboard: QTBUG-125251 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
560707,2 | GStreamer: avoid assertion failure with rapid state changes | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
560922,2 | GStreamer: avoid assertion failure with rapid state changes | 6.7 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
560974,2 | GStreamer: avoid assertion failure with rapid state changes | tqtc/lts-6.5 | qt/tqtc-qtmultimedia | Status: MERGED | +2 | 0 |
601349,2 | GStreamer: go through GST_STATE_READY explicitly during teardown | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 |
601470,2 | GStreamer: go through GST_STATE_READY explicitly during teardown | 6.8 | qt/qtmultimedia | Status: MERGED | +2 | 0 |
601615,2 | GStreamer: go through GST_STATE_READY explicitly during teardown | tqtc/lts-6.5 | qt/tqtc-qtmultimedia | Status: MERGED | +2 | 0 |