RESOLVED FIXED290178
[GStreamer] ASSERT triggered when attempting a seek on a paused pipeline playing an http URI
https://bugs.webkit.org/show_bug.cgi?id=290178
Summary [GStreamer] ASSERT triggered when attempting a seek on a paused pipeline play...
Nikolas Zimmermann
Reported 2025-03-21 07:47:00 PDT
Created attachment 474669 [details] Backtraces for all threads when WPEProcess hung Visited https://www.wpewebkit.org using MiniBrowser + new API this morning, with a recent build. I clicked on the button to playback the video, noting happened, I clicked another time, video started played for a few seconds, then restarted from scratch and played normal. I closed MiniBrowser, retried and caught this assertion: /host/home/nzimmermann/Software/GitRepositories/WebKit/Source/WTF/wtf/linux/RealTimeThreads.cpp(224) : void WTF::RealTimeThreads::realTimeKitMakeThreadRealTime(uint64_t, uint64_t, uint32_t) ASSERTION FAILED: GST_ELEMENT(baseSrc)->current_state < GST_STATE_PAUSED || GST_ELEMENT(baseSrc)->current_state == GST_STATE_PLAYING || GST_PAD_IS_FLUSHING(baseSrc->srcpad) /host/home/nzimmermann/Software/GitRepositories/WebKit/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp(748) : gboolean webKitWebSrcDoSeek(GstBaseSrc *, GstSegment *) 1 0x71b55e55c6c8 webKitWebSrcDoSeek(_GstBaseSrc*, _GstSegment*) 2 0x71b5502f9a59 gst_base_src_perform_seek 3 0x71b55e55cd73 webKitWebSrcEvent(_GstBaseSrc*, _GstEvent*) 4 0x71b5502f5fe5 gst_base_src_event 5 0x71b553920ebd gst_pad_send_event_unchecked 6 0x71b553921544 gst_pad_push_event_unchecked 7 0x71b55392b0a5 gst_pad_push_event 8 0x71b553920ebd gst_pad_send_event_unchecked 9 0x71b553921544 gst_pad_push_event_unchecked 10 0x71b55392b0a5 gst_pad_push_event ... On another try the WebProcess was just hanging, I attached gdb to the WebProcess and obtained a bt of all threads (see attachment).
Attachments
Backtraces for all threads when WPEProcess hung (151.39 KB, text/plain)
2025-03-21 07:47 PDT, Nikolas Zimmermann
no flags
Philippe Normand
Comment 1 2025-03-22 07:29:56 PDT
Well... it seems there are 2 issues: 1. the failed assert (which should have triggered a crash)... do you have a coredump for this? It would be interesting to know which condition fails 2. a deadlock (the backtrace currently attached to this bug), likely between thread 1 (which attempts to aquire the basesrc pad mutex lock) and thread 37 (which likely has the lock acquired already) I cannot reproduce any of those issues here.
Nikolas Zimmermann
Comment 2 2025-04-17 04:48:26 PDT
I don't have a coredump right now, but will try to capture one, if it happens again.
Philippe Normand
Comment 3 2025-07-16 03:08:27 PDT
(gdb) bt #0 0x00007f5c64704949 in WTFCrash () at /var/home/phil/WebKit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #1 0x00007f5c61841c9b in WTFCrashWithInfo(int, char const*, char const*, int) () at /var/home/phil/WebKit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #2 0x00007f5c67624f80 in webKitWebSrcDoSeek(_GstBaseSrc*, _GstSegment*) () at /var/home/phil/WebKit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #3 0x00007f5c59856f9d in gst_base_src_do_seek (src=0x8aade50 [WebKitWebSrc|source], segment=0x7f5a7a7fb000) at ../gstreamer/subprojects/gstreamer/libs/gst/base/gstbasesrc.c:1457 #4 gst_base_src_perform_seek (src=0x8aade50 [WebKitWebSrc|source], event=<optimized out>, unlock=1) at ../gstreamer/subprojects/gstreamer/libs/gst/base/gstbasesrc.c:1810 #5 0x00007f5c676253cc in webKitWebSrcEvent(_GstBaseSrc*, _GstEvent*) () at /var/home/phil/WebKit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #6 0x00007f5c59853291 in gst_base_src_event (pad=<optimized out>, parent=0x8aade50 [WebKitWebSrc|source], event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/libs/gst/base/gstbasesrc.c:2188 #7 0x00007f5c5cbb645b in gst_pad_send_event_unchecked (pad=pad@entry=0x8aae190 [GstPad|src], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:6071 #8 0x00007f5c5cbb6e5c in gst_pad_push_event_unchecked (pad=pad@entry=0x8ab05d0 [GstPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5666 #9 0x00007f5c5cbc0755 in gst_pad_push_event (pad=0x8ab05d0 [GstPad|sink], event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5812 #10 0x00007f5c5cbb645b in gst_pad_send_event_unchecked (pad=pad@entry=0x8ab09c0 [GstPad|src], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:6071 #11 0x00007f5c5cbb6e5c in gst_pad_push_event_unchecked (pad=pad@entry=0x7f5ad403f850 [GstPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5666 #12 0x00007f5c5cbc0755 in gst_pad_push_event (pad=0x7f5ad403f850 [GstPad|sink], event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5812 #13 0x00007f5c5cbb645b in gst_pad_send_event_unchecked (pad=pad@entry=0x7f5ad403fbe0 [GstPad|src], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:6071 #14 0x00007f5c5cbb6e5c in gst_pad_push_event_unchecked (pad=pad@entry=0x7f5ad403bbb0 [GstGhostPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5666 #15 0x00007f5c5cbc0755 in gst_pad_push_event (pad=pad@entry=0x7f5ad403bbb0 [GstGhostPad|sink], event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5812 #16 0x00007f5c5cbc0c61 in event_forward_func (pad=0x7f5ad403bbb0 [GstGhostPad|sink], data=0x7f5a7a7fb6e0) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3165 #17 0x00007f5c5cbbcbdb in gst_pad_forward (pad=pad@entry=0x7f5ad403bf90 [GstProxyPad|proxypad7], forward=forward@entry=0x7f5c5cbc0ba0 <event_forward_func>, user_data=user_data@entry=0x7f5a7a7fb6e0) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3119 #18 0x00007f5c5cbbccd5 in gst_pad_event_default (pad=0x7f5ad403bf90 [GstProxyPad|proxypad7], parent=<optimized out>, event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3216 #19 0x00007f5c5cbb645b in gst_pad_send_event_unchecked (pad=pad@entry=0x7f5ad403bf90 [GstProxyPad|proxypad7], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:6071 #20 0x00007f5c5cbb6e5c in gst_pad_push_event_unchecked (pad=pad@entry=0x7f5ad403a250 [GstPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5666 #21 0x00007f5c5cbc0755 in gst_pad_push_event (pad=0x7f5ad403a250 [GstPad|sink], event=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5812 #22 0x00007f5c5cbb645b in gst_pad_send_event_unchecked (pad=pad@entry=0x7f5ad403a630 [GstPad|src], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:6071 #23 0x00007f5c5cbb6e5c in gst_pad_push_event_unchecked (pad=pad@entry=0x7f5a6c17a020 [GstPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5666 #24 0x00007f5c5cbc0755 in gst_pad_push_event (pad=0x7f5a6c17a020 [GstPad|sink], event=event@entry=0x7f5a6c003550 [GstEvent]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5812 #25 0x00007f5a94100f32 in gst_ogg_demux_loop_push (ogg=0x7f5a6c179b80 [GstOggDemux|oggdemux0]) at ../gstreamer/subprojects/gst-plugins-base/ext/ogg/gstoggdemux.c:5095 #26 0x00007f5c5cdf6862 in g_thread_proxy (data=0x7f5a6c17a8f0) at ../glib/gthread.c:893 #27 0x00007f5c5c5911d4 in start_thread (arg=<optimized out>) at pthread_create.c:448 #28 0x00007f5c5c613b14 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100 (gdb) f 3 (gdb) p *src $1 = {element = {object = {object = {g_type_instance = {g_class = 0x8952900 [g_type: WebKitWebSrc/GstPushSrc/GstBaseSrc/GstElement/GstObject/GInitiallyUnowned]}, ref_count = 5, qdata = 0x8ab3890}, lock = { p = 0x0, i = {0, 0}}, name = 0x8aae3e0 "source", parent = 0x8aa7e80 [GstURIDecodeBin|uridecodebin0], flags = 32834, control_bindings = 0x0, control_rate = 100000000, last_sync = 18446744073709551615, _gst_reserved = 0x0}, state_lock = {p = 0x8aacf40, i = {0, 0}}, state_cond = {p = 0x0, i = {20, 0}}, state_cookie = 10, target_state = GST_STATE_PAUSED, current_state = GST_STATE_PAUSED, next_state = GST_STATE_VOID_PENDING, pending_state = GST_STATE_VOID_PENDING, last_return = GST_STATE_CHANGE_SUCCESS, bus = 0x894e6c0 [GstBus|bus21], clock = 0x8a84ee0 [GstAudioClock|GstPulseSinkClock], base_time = 0 [+0:00:00.000000000], start_time = 451000 [0:00:00.000451000], numpads = 1, pads = 0x8aa3da0 = {0x8aae190}, numsrcpads = 1, srcpads = 0x8aacf70 = {0x8aae190}, numsinkpads = 0, sinkpads = 0x0, pads_cookie = 1, contexts = 0x7f5ac8007920 = {0x7f5ad40065c0}, _gst_reserved = {0x0, 0x0, 0x0}}, srcpad = 0x8aae190 [GstPad|src], live_lock = {p = 0x0, i = {0, 0}}, live_cond = {p = 0x0, i = {8, 0}}, is_live = 0, live_running = 0, blocksize = 8192, can_activate_push = 1, random_access = 0, clock_id = 0x0, segment = {flags = GST_SEGMENT_FLAG_SEGMENT, rate = 1, applied_rate = 1, format = GST_FORMAT_BYTES, base = 173788, offset = 0, start = 0, stop = 18446744073709551615, time = 0, position = 40960, duration = 1607177, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, need_newsegment = 0, num_buffers = -1, num_buffers_left = -1, typefind = 0, running = 0, pending_seek = 0x0, priv = 0x8aadd70, _gst_reserved = {0x0 <repeats 20 times>}}
Philippe Normand
Comment 4 2025-07-16 03:35:22 PDT
EWS
Comment 5 2025-07-18 00:43:47 PDT
Committed 297575@main (464f2b6d7494): <https://commits.webkit.org/297575@main> Reviewed commits have been landed. Closing PR #48113 and removing active labels.
Radar WebKit Bug Importer
Comment 6 2025-07-18 00:44:30 PDT
Note You need to log in before you can comment on or make changes to this bug.