RESOLVED FIXED267411
REGRESSION(272844@main): [GStreamer][Debug] ASSERTION FAILED: isMainThread() in WebCore::MediaStreamTrackPrivate::source()
https://bugs.webkit.org/show_bug.cgi?id=267411
Summary REGRESSION(272844@main): [GStreamer][Debug] ASSERTION FAILED: isMainThread() ...
Vitaly Dyackhov
Reported 2024-01-11 07:42:06 PST
Since 272844@main, we allow MediaStreamTrackPrivate to work out of main thread. It made ASSERT(isMainThread()) to fail in many tests. Incomplete list of crashing tests: fast/mediastream/RTCPeerConnection-addIceCandidate.html fast/mediastream/RTCPeerConnection-addTransceiver.html fast/mediastream/RTCPeerConnection-icecandidate-event.html fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html fast/mediastream/RTCPeerConnection-localDescription.html fast/mediastream/RTCPeerConnection-media-setup-two-dialogs.html fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid.html http/wpt/mediarecorder/MediaRecorder-multiple-start-stop.html http/wpt/mediarecorder/MediaRecorder-video-bitrate.html http/wpt/mediarecorder/MediaRecorder-video-h264-profiles.html http/wpt/mediarecorder/pause-recording-timeSlice.html http/wpt/mediarecorder/pause-recording.html http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html http/wpt/mediarecorder/video-rotation.html imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https.html imported/w3c/web-platform-tests/webrtc-stats/outbound-rtp.https.html media/now-playing-status-for-video-conference-web-page.html Example of the stack trace: Thread 1 (Thread 0x7fcccd7fa6c0 (LWP 79484)): #0 WTFCrash() () at /app/webkit/Source/WTF/wtf/Assertions.cpp:333 #1 0x00007fcfd4f67610 in WTFCrashWithInfo(int, char const*, char const*, int) () at /app/webkit/WebKitBuild/WPE/Debug/WTF/Headers/wtf/Assertions.h:778 #2 0x00007fcfdd767987 in WebCore::MediaStreamTrackPrivate::source() (this=0x7fcfb959f240) at /app/webkit/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:454 #3 0x00007fcfdd7df8ca in InternalSource::videoFrameAvailable(WebCore::VideoFrame&, WebCore::VideoFrameTimeMetadata) (this=0x7fcfb9419ea0, videoFrame=...) at /app/webkit/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:404 #4 0x00007fcfdd76ab4a in WebCore::RealtimeMediaSource::videoFrameAvailable(WebCore::VideoFrame&, WebCore::VideoFrameTimeMetadata) (this=0x7fcf770d7400, videoFrame=..., metadata=...) at /app/webkit/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:358 #5 0x00007fcfdd7b9c37 in WebCore::RealtimeVideoCaptureSource::dispatchVideoFrameToObservers(WebCore::VideoFrame&, WebCore::VideoFrameTimeMetadata) (this=0x7fcf770d7400, videoFrame=..., metadata=...) at /app/webkit/Source/WebCore/platform/mediastream/RealtimeVideoCaptureSource.cpp:391 #6 0x00007fcfdd80c342 in operator()<WTF::Ref<WebCore::VideoFrameGStreamer> >(WTF::Ref<WebCore::VideoFrameGStreamer, WTF::RawPtrTraits<WebCore::VideoFrameGStreamer> >&&) const (__closure=0x7fcfb93541b8, videoFrame=...) at /app/webkit/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:72 #7 0x00007fcfdd80c382 in WTF::Detail::CallableWrapper<WebCore::MockRealtimeVideoSourceGStreamer::MockRealtimeVideoSourceGStreamer(WTF::String&&, WTF::AtomString&&, WebCore::MediaDeviceHashSalts&&)::<lambda(auto:83&&)>, void, WTF::Ref<WebCore::VideoFrameGStreamer, WTF::RawPtrTraits<WebCore::VideoFrameGStreamer> >&&>::call(WTF::Ref<WebCore::VideoFrameGStreamer, WTF::RawPtrTraits<WebCore::VideoFrameGStreamer> > &&) (this=0x7fcfb93541b0, in#0=...) at /app/webkit/WebKitBuild/WPE/Debug/WTF/Headers/wtf/Function.h:53 #8 0x00007fcfdd7f706d in WTF::Function<void (WTF::Ref<WebCore::VideoFrameGStreamer, WTF::RawPtrTraits<WebCore::VideoFrameGStreamer> >&&)>::operator()(WTF::Ref<WebCore::VideoFrameGStreamer, WTF::RawPtrTraits<WebCore::VideoFrameGStreamer> >&&) const (this=0x7fcfb92e30e8, in#0=...) at /app/webkit/WebKitBuild/WPE/Debug/WTF/Headers/wtf/Function.h:82 #9 0x00007fcfdd7eda45 in operator()(WebCore::GStreamerVideoCapturer*, GstElement*) const (__closure=0x0, capturer=0x7fcfb92e3020, sink=0x56225375e1b0 [GstElement|Video_capturer_webkitappsinkwithworkarounds75_7FCFB92E3020]) at /app/webkit/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:64 #10 0x00007fcfdd7edaa9 in _FUN(WebCore::GStreamerVideoCapturer*, GstElement*) () at /app/webkit/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:64 #11 0x00007fcfc342c056 in ffi_call_unix64 () at ../src/x86/unix64.S:104 #12 0x00007fcfc342ab5d in ffi_call_int (cif=cif@entry=0x7fcccd7f9410, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673 #13 0x00007fcfc342b313 in ffi_call (cif=cif@entry=0x7fcccd7f9410, fn=fn@entry=0x7fcfdd7eda84 <_FUN(WebCore::GStreamerVideoCapturer*, GstElement*)>, rvalue=rvalue@entry=0x7fcccd7f9370, avalue=avalue@entry=0x7fcccd7f9330) at ../src/x86/ffi64.c:710 #14 0x00007fcfc8e44b43 in g_cclosure_marshal_generic_va (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at ../gobject/gclosure.c:1650 #15 0x00007fcfc8e5ea83 in _g_closure_invoke_va (param_types=0x0, n_params=<optimized out>, args=0x7fcccd7f9620, instance=0x56225375e1b0, return_value=<optimized out>, closure=<optimized out>) at ../gobject/gclosure.c:895 #16 g_signal_emit_valist (instance=<optimized out>, signal_id=29, detail=<optimized out>, var_args=var_args@entry=0x7fcccd7f9620) at ../gobject/gsignal.c:3472 #17 0x00007fcfc8e5ec03 in g_signal_emit (instance=instance@entry=0x56225375e1b0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622 #18 0x00007fcfc6367603 in gst_app_sink_render_common (psink=0x56225375e1b0 [GstBaseSink|Video_capturer_webkitappsinkwithworkarounds75_7FCFB92E3020], data=0x56225377aab0 [None], is_list=<optimized out>) at ../gst-libs/gst/app/gstappsink.c:1109 #19 0x00007fcfc633ce0d in gst_base_sink_chain_unlocked.isra.0 (basesink=0x56225375e1b0 [GstBaseSink|Video_capturer_webkitappsinkwithworkarounds75_7FCFB92E3020], obj=0x56225377aab0, is_list=0, pad=<optimized out>) at ../libs/gst/base/gstbasesink.c:3955 #20 0x00007fcfc630acce in gst_base_sink_chain_main (basesink=0x56225375e1b0 [GstBaseSink|Video_capturer_webkitappsinkwithworkarounds75_7FCFB92E3020], pad=<optimized out>, obj=0x56225377aab0, is_list=0) at ../libs/gst/base/gstbasesink.c:4081 #21 0x00007fcfca1cfeec in gst_pad_chain_data_unchecked (pad=pad@entry=0x5622537576e0 [GstPad|sink], type=type@entry=4112, data=data@entry=0x56225377aab0) at ../gst/gstpad.c:4486 #22 0x00007fcfca1d328e in gst_pad_push_data (pad=pad@entry=0x5622537acfd0 [GstPad|src], type=type@entry=4112, data=data@entry=0x56225377aab0) at ../gst/gstpad.c:4762 #23 0x00007fcfca1d38c4 in gst_pad_push (pad=0x5622537acfd0 [GstPad|src], buffer=buffer@entry=0x56225377aab0 [None]) at ../gst/gstpad.c:4881 #24 0x00007fcf507d8de9 in gst_queue_push_one (queue=0x562253725b00 [GstQueue|queue75]) at ../plugins/elements/gstqueue.c:1388 #25 gst_queue_loop (pad=<optimized out>) at ../plugins/elements/gstqueue.c:1541 #26 0x00007fcfca200204 in gst_task_func (task=0x5622535e1af0 [GstTask|queue75:src]) at ../gst/gsttask.c:384 #27 0x00007fcfca3c04f2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:350 #28 0x00007fcfca3bd862 in g_thread_proxy (data=0x7fcf4c000ed0) at ../glib/gthread.c:831 #29 0x00007fcfc9c29e39 in start_thread (arg=<optimized out>) at pthread_create.c:444 #30 0x00007fcfc9cb18c4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Attachments
Vitaly Dyackhov
Comment 1 2024-01-11 07:58:40 PST
EWS
Comment 2 2024-01-11 08:02:16 PST
Test gardening commit 272912@main (048dbb19e05f): <https://commits.webkit.org/272912@main> Reviewed commits have been landed. Closing PR #22662 and removing active labels.
Philippe Normand
Comment 3 2024-01-11 10:45:46 PST
Vitaly Dyackhov
Comment 4 2024-01-12 01:07:40 PST
More failing tests: fast/mediastream/RTCPeerConnection-inspect-offer.html fast/mediastream/RTCPeerConnection-setRemoteDescription-offer.html imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-disabled-tracks.https.html
Vitaly Dyackhov
Comment 5 2024-01-12 01:08:45 PST
EWS
Comment 6 2024-01-12 01:12:14 PST
Test gardening commit 272961@main (b2e452415ac2): <https://commits.webkit.org/272961@main> Reviewed commits have been landed. Closing PR #22699 and removing active labels.
Vitaly Dyackhov
Comment 7 2024-01-16 03:32:53 PST
More tests: fast/mediastream/RTCPeerConnection-overloaded-operations.html webrtc/addTransceiver-then-addTrack.html webrtc/audio-muted-stats.html webrtc/audio-peer-connection-g722.html webrtc/audio-peer-connection-webaudio.html webrtc/audio-replace-track.html webrtc/audio-samplerate-change.html webrtc/canvas-to-peer-connection-2d.html webrtc/captureCanvas-webrtc-software-h264-baseline.html webrtc/captureCanvas-webrtc-software-h264-high.html webrtc/captureCanvas-webrtc.html webrtc/clone-audio-track.html webrtc/concurrentVideoPlayback.html webrtc/concurrentVideoPlayback2.html webrtc/connection-state.html webrtc/ephemeral-certificates-and-cnames.html webrtc/h264-baseline.html webrtc/h265.html webrtc/legacy-api.html webrtc/libwebrtc/descriptionGetters.html webrtc/msection-recycling.html webrtc/multi-audio.html webrtc/multi-video.html webrtc/no-port-zero-in-upd-candidates.html webrtc/peer-connection-audio-mute2.html
Vitaly Dyackhov
Comment 8 2024-01-16 03:40:58 PST
EWS
Comment 9 2024-01-16 03:44:27 PST
Test gardening commit 273060@main (4312e693b8d8): <https://commits.webkit.org/273060@main> Reviewed commits have been landed. Closing PR #22814 and removing active labels.
Vitaly Dyackhov
Comment 10 2024-01-17 01:05:05 PST
webrtc/audio-peer-connection-g722.html webrtc/canvas-to-peer-connection.html webrtc/peer-connection-audio-mute.html webrtc/peer-connection-audio-unmute.html webrtc/peer-connection-createMediaStreamDestination.html webrtc/peer-connection-remote-audio-mute.html webrtc/peer-connection-remote-audio-mute2.html webrtc/peer-connection-track-end.html webrtc/peerconnection-page-cache-long.html webrtc/peerconnection-page-cache.html webrtc/receiver-track-should-stay-live-even-if-receiver-is-inactive.html webrtc/release-after-getting-track.html webrtc/remoteAudio-never-played.html
Vitaly Dyackhov
Comment 11 2024-01-17 01:15:24 PST
EWS
Comment 12 2024-01-17 01:19:17 PST
Test gardening commit 273119@main (af9d3ff330ef): <https://commits.webkit.org/273119@main> Reviewed commits have been landed. Closing PR #22857 and removing active labels.
Vitaly Dyackhov
Comment 13 2024-01-19 01:35:53 PST
fast/mediastream/RTCPeerConnection-createAnswer.html http/wpt/mediarecorder/mimeType.html webrtc/utf8-sdp.html webrtc/video-addTrack.html webrtc/video-autoplay.html webrtc/video-clone-track.html webrtc/video-getParameters.html webrtc/video-maxBitrate-vp8.html webrtc/video-maxBitrate.html webrtc/video-maxFramerate.html webrtc/video-mute-vp8.html webrtc/video-mute.html webrtc/video-receivers.html webrtc/video-remote-mute.html webrtc/video-replace-muted-track.html
Vitaly Dyackhov
Comment 14 2024-01-19 01:47:43 PST
EWS
Comment 15 2024-01-19 01:52:20 PST
Test gardening commit 273216@main (1f209ea914f1): <https://commits.webkit.org/273216@main> Reviewed commits have been landed. Closing PR #22967 and removing active labels.
Vitaly Dyackhov
Comment 16 2024-01-22 02:08:59 PST
fast/mediastream/RTCPeerConnection-addTrack-reuse-sender.html webrtc/captureCanvas-webrtc-with-video-scaling-adaptation.html webrtc/libwebrtc/release-while-creating-offer.html webrtc/video-replace-track-to-null.html webrtc/video-rotation-no-cvo.html webrtc/video-rotation.html webrtc/video-stats.html webrtc/video-unmute.html webrtc/video-with-data-channel.html webrtc/video.html webrtc/vp8-then-h264-gpu-process-crash.html webrtc/vp9-profile2.html webrtc/vp9.html
Vitaly Dyackhov
Comment 17 2024-01-22 02:22:56 PST
EWS
Comment 18 2024-01-22 02:26:45 PST
Test gardening commit 273291@main (8a64069be24e): <https://commits.webkit.org/273291@main> Reviewed commits have been landed. Closing PR #23037 and removing active labels.
EWS
Comment 19 2024-01-22 02:52:07 PST
Committed 273292@main (4dab5e97eee3): <https://commits.webkit.org/273292@main> Reviewed commits have been landed. Closing PR #22668 and removing active labels.
Radar WebKit Bug Importer
Comment 20 2024-01-22 02:53:15 PST
Diego Pino
Comment 21 2024-01-22 06:53:30 PST
EWS
Comment 22 2024-01-22 08:51:17 PST
Committed 273303@main (ac6c0cf26ac8): <https://commits.webkit.org/273303@main> Reviewed commits have been landed. Closing PR #23040 and removing active labels.
Philippe Normand
Comment 23 2024-09-20 07:00:58 PDT
Why is gardening still done on this bug? Are the ASSERTs still an issue?
Vitaly Dyackhov
Comment 24 2024-09-24 08:25:30 PDT
These ASSERTs are fixed. And we don't do gardening on this. Looks like, Diego re-opened it to push one land a related PR.
Philippe Normand
Comment 25 2024-09-24 11:00:56 PDT
I was confused after seeing a PR from Ziran about this bug, but it's been sorted out.
EWS
Comment 26 2024-09-25 01:33:03 PDT
Test gardening commit 284213@main (b76a2f9653e8): <https://commits.webkit.org/284213@main> Reviewed commits have been landed. Closing PR #34169 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.