Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wpe-2.38][mse] hang on early seek #1367

Closed
emutavchi opened this issue Jul 16, 2024 · 7 comments
Closed

[wpe-2.38][mse] hang on early seek #1367

emutavchi opened this issue Jul 16, 2024 · 7 comments
Assignees
Labels
upstream Related to an upstream bug (or should be at some point) wpe-2.38

Comments

@emutavchi
Copy link

Can be reproduced with attached mse_hang.html.gz. It is reproducible randomly, but usually within first 100 iterations

Browser main thread is blocked on playsink data prob that is awaiting for data flow on another pad:

Thread 1 (Thread 18419.18419 "WPEWebProcess"):
#0  syscall () at ../sysdeps/unix/sysv/linux/arm/syscall.S:37
#1  0xb2cf1ee8 in g_cond_wait (cond=cond@entry=0x38e7d4, mutex=mutex@entry=0x38e784) at ../glib-2.62.6/glib/gthread-posix.c:1422
#2  0xb2b7c34e in do_probe_callbacks (pad=pad@entry=0x38e778, info=info@entry=0xbed95728, defaultval=defaultval@entry=GST_FLOW_OK) at ../gstreamer-1.18.5/gst/gstpad.c:3851
#3  0xb2b7ec9a in gst_pad_push_event_unchecked (pad=pad@entry=0x38e778, event=0xac905098, type=type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../gstreamer-1.18.5/gst/gstpad.c:5448
#4  0xb2b7f228 in push_sticky (pad=0x38e778, ev=0xbed957b8, user_data=0xbed957fc) at ../gstreamer-1.18.5/gst/gstpad.c:4004
#5  0xb2b7d3bc in events_foreach (pad=pad@entry=0x38e778, func=0xb2b7f1e5 <push_sticky>, user_data=user_data@entry=0xbed957fc) at ../gstreamer-1.18.5/gst/gstpad.c:608
#6  0xb2b85a74 in check_sticky (event=0xac905098, pad=0x38e778) at ../gstreamer-1.18.5/gst/gstpad.c:4063
#7  gst_pad_push_event (pad=pad@entry=0x38e778, event=0xac905098) at ../gstreamer-1.18.5/gst/gstpad.c:5632
#8  0xb2b85d76 in event_forward_func (pad=0x38e778, data=0xbed958d4) at ../gstreamer-1.18.5/gst/gstpad.c:3125
...
#75 0xb40e5934 in webKitMediaSrcStreamFlush () at ../git/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:950
#76 0xb40e6060 in webKitMediaSrcSeek () at ../git/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:983
#77 webKitMediaSrcSendEvent () at ../git/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:1047
#78 0xb2b68c16 in gst_element_send_event (element=0x386948, event=0x3976b0) at ../gstreamer-1.18.5/gst/gstelement.c:1947
#79 0xb40e02ae in WebCore::MediaPlayerPrivateGStreamerMSE::doSeek () at ../git/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:277
#80 0xb40ded7a in WebCore::MediaPlayerPrivateGStreamerMSE::seek () at ../git/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:247
#81 0xb4b407da in WebCore::HTMLMediaElement::seekTask () at ../git/Source/WebCore/html/HTMLMediaElement.cpp:3356
#82 0xb4a01806 in WTF::Function<void ()>::operator()() const () at WTF/Headers/wtf/Function.h:82
#83 WebCore::EventLoopFunctionDispatchTask::execute () at ../git/Source/WebCore/dom/EventLoop.cpp:160
#84 WebCore::EventLoop::run () at ../git/Source/WebCore/dom/EventLoop.cpp:124
#85 0xb4a456be in WebCore::WindowEventLoop::didReachTimeToRun () at ../git/Source/WebCore/dom/WindowEventLoop.cpp:121
#86 0xb4dc0854 in WebCore::ThreadTimers::sharedTimerFiredInternal () at ../git/Source/WebCore/platform/ThreadTimers.cpp:127
#87 0xb4060362 in operator() () at ../git/Source/WTF/wtf/glib/RunLoopGLib.cpp:177
#88 _FUN () at ../git/Source/WTF/wtf/glib/RunLoopGLib.cpp:181
#89 0xb4060930 in operator() () at ../git/Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#90 _FUN () at ../git/Source/WTF/wtf/glib/RunLoopGLib.cpp:56
#91 0xb2cbf022 in g_main_dispatch (context=0x3e090) at ../glib-2.62.6/glib/gmain.c:3216
#92 g_main_context_dispatch (context=context@entry=0x3e090) at ../glib-2.62.6/glib/gmain.c:3881
#93 0xb2cbf278 in g_main_context_iterate (context=0x3e090, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.62.6/glib/gmain.c:3954
#94 0xb2cbf4c8 in g_main_loop_run (loop=0x46a78) at ../glib-2.62.6/glib/gmain.c:4148
#95 0xb4060bd0 in WTF::RunLoop::run () at ../git/Source/WTF/wtf/glib/RunLoopGLib.cpp:108
#96 0xb37f43f2 in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run () at ../git/Source/WebKit/Shared/AuxiliaryProcessMain.h:71
#97 WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run () at ../git/Source/WebKit/Shared/AuxiliaryProcessMain.h:58
#98 WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainWPE> () at ../git/Source/WebKit/Shared/AuxiliaryProcessMain.h:97
#99 0xb37f4422 in WebKit::WebProcessMain () at ../git/Source/WebKit/WebProcess/wpe/WebProcessMainWPE.cpp:75
#100 0xb30ed9e4 in __libc_start_main (main=0x104d5 <main()>, argc=3, argv=0xbed97624, init=<optimized out>, fini=0x105d9 <__libc_csu_fini>, rtld_fini=0xb6faae25 <_dl_fini>, stack_end=0xbed97624) at libc-start.c:308
#101 0x000104f8 in _start () at ../sysdeps/arm/start.S:126

all_bt.txt.gz

@emutavchi
Copy link
Author

emutavchi commented Jul 16, 2024

We use attached patch as workaround with GStreamer 1.18.5:
fix-deadlock-on-early-flushing-seek.patch.gz

@eocanha
Copy link
Member

eocanha commented Aug 8, 2024

I haven't been able to reproduce the issue even after 500 repetitions. I might try to blindly include that patch in our set of buildroot custom patches, but the problem you describe is suspicioulsy similar to the one reported in https://bugs.webkit.org/show_bug.cgi?id=272975 / WebKit/WebKit#27517 (a problem with a half-configured playsink when flush happens).
GStreamer MR https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6763 also seems to fix it, and is half-way into being approved and merged. Can you check if that fix would work in your case?

@eocanha
Copy link
Member

eocanha commented Sep 30, 2024

@emutavchi
Copy link
Author

Hi @eocanha, apologies for delayed response. Unfortunately I don't have cycles to try latest GStreamer right now. However, the hang is quite easily reproducible for me with Epiphany Browser on WebKitGTK 2.44.3 + GStreamer 1.20.3 on Ubuntu 22.04.5 LTS.

this is the best callstack of the hang I could get with Ubuntu debug syms:

#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007fd6afbd2ba3 in g_cond_wait () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fd6b038bc85 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#3  0x00007fd6b038f25e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#4  0x00007fd6b038f908 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#5  0x00007fd6b03857b0 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#6  0x00007fd6b03929da in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#7  0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#8  0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#9  0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#10 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#11 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#12 0x00007fd6b038f908 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#13 0x00007fd6b03857b0 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#14 0x00007fd6b03929da in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#15 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#16 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#17 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#18 0x00007fd6504e5a7e in ?? () from target:/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
#19 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#20 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#21 0x00007fd6b038f908 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#22 0x00007fd6b03857b0 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#23 0x00007fd6b03929da in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#24 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#25 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#26 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#27 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#28 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#29 0x00007fd6b038f908 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#30 0x00007fd6b03857b0 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#31 0x00007fd6b03929da in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#32 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#33 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#34 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#35 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#36 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#37 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#38 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#39 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#40 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#41 0x00007fd650507231 in ?? () from target:/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
#42 0x00007fd6b038eba2 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#43 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#44 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#45 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#46 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#47 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#48 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#49 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#50 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#51 0x00007fd6b047977f in ?? () from target:/lib/x86_64-linux-gnu/libgstbase-1.0.so.0
#52 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#53 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#54 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#55 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#56 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#57 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#58 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#59 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#60 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#61 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#62 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#63 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#64 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#65 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#66 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#67 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#68 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#69 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#70 0x00007fd6b0392f81 in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#71 0x00007fd6b038c9fe in gst_pad_forward () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#72 0x00007fd6b038cb45 in gst_pad_event_default () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#73 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#74 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#75 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#76 0x00007fd6b038edcc in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#77 0x00007fd6b038f44e in ?? () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#78 0x00007fd6b0392a2e in gst_pad_push_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#79 0x00007fd6b69d8705 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#80 0x00007fd6b69d91f3 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#81 0x00007fd6b036b69a in gst_element_send_event () from target:/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#82 0x00007fd6b69e5835 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#83 0x00007fd6b61f6d30 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#84 0x00007fd6b5f880f8 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#85 0x00007fd6b6037385 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#86 0x00007fd6b67de49f in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#87 0x00007fd6b3478032 in ?? () from target:/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0
#88 0x00007fd6b3478833 in ?? () from target:/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0
#89 0x00007fd6afb83c44 in g_main_context_dispatch () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#90 0x00007fd6afbd92b8 in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#91 0x00007fd6afb832b3 in g_main_loop_run () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#92 0x00007fd6b3478980 in WTF::RunLoop::run() () from target:/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0
#93 0x00007fd6b4d048f8 in ?? () from target:/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
#94 0x00007fd6b3ad8d90 in __libc_start_call_main (main=main@entry=0x5625af9a0060, argc=argc@entry=4, argv=argv@entry=0x7ffcdf883a08) at ../sysdeps/nptl/libc_start_call_main.h:58
#95 0x00007fd6b3ad8e40 in __libc_start_main_impl (main=0x5625af9a0060, argc=4, argv=0x7ffcdf883a08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcdf\
8839f8) at ../csu/libc-start.c:392
#96 0x00005625af9a0095 in ?? ()

@eocanha
Copy link
Member

eocanha commented Oct 1, 2024

Ok. I've been able to reproduce it upstream. I'm debugging it.

@eocanha
Copy link
Member

eocanha commented Oct 16, 2024

The problem, which happened once in a bunch of test case runs, was as follows:

A single buffer of one of the streams was pushed (the other stream simply didn't exist yet), and this caused the stream to be in mid-creation when the seek happened. The seek caused WebKitMediaSrc to emit flush-start, which was forwarded downstream in a half-created stream element chain until it got to an unconnected element (and couldn't be forwarded anymore because the rest of the stream element chain didn't exist yet). Then the chain got completely connected (by timing chance) and flush-stop was emitted (also by timing chance). This caused the last elements of the chain to receive a flush-stop without a previous flush-start.

The flush-stop event was propagated downstream, up to a pad (decodebin3-5:video_0) that has sticky events stored (the stream-start event, to be precise). That pad had to push the sticky events first before processing that flush-stop. The stream-start event was forwarded downstream until it reached video_sink:proxypad142, which calls a blocking probe and keeps the flush-stop event stuck upstream.

After discussing the problem with some colleagues and come up with some possible workarounds, the final solution was to disable sending sticky events when pushing a FLUSH_STOP. @ntrrgc kindly wrote a patch to implement this solution in GStreamer and submitted it as https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7632, which was approved and should land soon.

I've checked that this patch effectively solves the problem in WebKit upstream. I haven't been able to reproduce it anymore after 334 iterations of the test case (it would manifest before 10 repetitions without it).

I'm going to work in the next days to port that patch to GStreamer 1.18 and submit it as a buildroot patch.

intel-media-ci pushed a commit to intel-media-ci/gstreamer that referenced this issue Oct 16, 2024
FLUSH_STOP is meant to clear the flushing state of pads and elements
downstream, not to process data. Hence, a FLUSH_STOP should not
propagate sticky events. This is also consistent with how flushes are a
special case for probes.

Currently this is almost always the case, since a FLUSH_STOP is
__usually__ preceded by a FLUSH_START, and events (sticky or not) are
discarded while a pad has the FLUSHING flag active (set by FLUSH_START).

However, it is currently assumed that a FLUSH_STOP not preceded by a
FLUSH_START is correct behavior, and this will occur while autoplugging
pipelines are constructed. This leaves us with an unhandled edge case!

This patch explicitly disables sending sticky events when pushing a
FLUSH_STOP, instead of relying on the flushing flag of the pad, which
will break in the edge case of a FLUSH_STOP not preceded by a
FLUSH_START.

If sticky events are propagated in response to a FLUSH_STOP, the
flushing thread can end up deadlocked in blocking code of a downstream
pad, such as a blocking probe. Instead, those events should be
propagated from the streaming thread of the pad when handling a
non-flushing synchronized event or buffer.

This fixes a deadlock found in WebKit with playbin3 when seeks occur
before preroll, where the seeking thread ended up stuck in the blocking
probe of playsink:
WebPlatformForEmbedded/WPEWebKit#1367

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7632>
eocanha added a commit to WebPlatformForEmbedded/buildroot that referenced this issue Oct 17, 2024
eocanha added a commit to WebPlatformForEmbedded/buildroot that referenced this issue Oct 17, 2024
@eocanha eocanha closed this as completed Oct 17, 2024
@eocanha eocanha added the upstream Related to an upstream bug (or should be at some point) label Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
upstream Related to an upstream bug (or should be at some point) wpe-2.38
Development

No branches or pull requests

3 participants