Bug 267411
| Summary: | REGRESSION(272844@main): [GStreamer][Debug] ASSERTION FAILED: isMainThread() in WebCore::MediaStreamTrackPrivate::source() | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Vitaly Dyackhov <vitaly> |
| Component: | Media | Assignee: | Diego Pino <dpino> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | philn, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Vitaly Dyackhov
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 | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Vitaly Dyackhov
Pull request: https://github.com/WebKit/WebKit/pull/22662
EWS
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
Pull request: https://github.com/WebKit/WebKit/pull/22668
Vitaly Dyackhov
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
Pull request: https://github.com/WebKit/WebKit/pull/22699
EWS
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
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
Pull request: https://github.com/WebKit/WebKit/pull/22814
EWS
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
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
Pull request: https://github.com/WebKit/WebKit/pull/22857
EWS
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
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
Pull request: https://github.com/WebKit/WebKit/pull/22967
EWS
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
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
Pull request: https://github.com/WebKit/WebKit/pull/23037
EWS
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
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
<rdar://problem/121363741>
Diego Pino
Re-opening for pull request https://github.com/webkit/webkit/pull/23040
EWS
Committed 273303@main (ac6c0cf26ac8): <https://commits.webkit.org/273303@main>
Reviewed commits have been landed. Closing PR #23040 and removing active labels.
Philippe Normand
Why is gardening still done on this bug? Are the ASSERTs still an issue?
Vitaly Dyackhov
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
I was confused after seeing a PR from Ziran about this bug, but it's been sorted out.
EWS
Test gardening commit 284213@main (b76a2f9653e8): <https://commits.webkit.org/284213@main>
Reviewed commits have been landed. Closing PR #34169 and removing active labels.