[Webkit-unassigned] [Bug 240716] New: REGRESSION(r290375) [GStreamer] Deadlock in WebProcess termination if AppendPipeline is started

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri May 20 07:44:02 PDT 2022


https://bugs.webkit.org/show_bug.cgi?id=240716

            Bug ID: 240716
           Summary: REGRESSION(r290375) [GStreamer] Deadlock in WebProcess
                    termination if AppendPipeline is started
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WPE WebKit
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: olivier.blin at softathome.com
                CC: aperez at igalia.com, bandou.yacine at gmail.com,
                    bugs-noreply at webkitgtk.org, cgarcia at igalia.com,
                    loic.yhuel at softathome.com, mcatanzaro at gnome.org,
                    pnormand at igalia.com

Created attachment 459617

  --> https://bugs.webkit.org/attachment.cgi?id=459617&action=review

Test case

Since r290375, GStreamer ports are calling gst_deinit() at WebProcess termination.

This is causing a deadlock if a MSE SourceBuffer has been instantiated.
That is because the GstTask from the appsrc element in the AppendPipeline is still running.

The attached test page allows the reproduce the deadlock.
It has been adapted from Alicia's test case in bug 191876.

To reproduce:
./Tools/Scripts/run-minibrowser --wpe file:///path/to/deadlock-at-exit-if-appendpipeline-started.html &
killall MiniBrowser
ps

You can see that WPEWebProcess is still runing.
It is blocked in the gst_deinit() call.

Relevant callstacks during the deadlock:

Thread 13 (Thread 0x7f99da401700 (LWP 758768)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f9b60f11623 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f9b5e129517 in gst_app_src_create (bsrc=0xc6d850 [GstBaseSrc|appsrc0], offset=<optimized out>, size=4096, buf=0x7f99da400938) at gstappsrc.c:1279
#3  0x00007f9b5e0e34dd in gst_base_src_get_range (src=src at entry=0xc6d850 [GstBaseSrc|appsrc0], offset=offset at entry=0, length=<optimized out>, buf=buf at entry=0x7f99da400a18) at gstbasesrc.c:2527
#4  0x00007f9b5e0e65bc in gst_base_src_loop (pad=0xbc8080 [GstPad|src]) at gstbasesrc.c:2851
#5  0x00007f9b60d04107 in gst_task_func (task=0xbfa3b0 [GstTask|appsrc0:src]) at gsttask.c:328
#6  0x00007f9b60eee374 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x00007f9b60eedad1 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8  0x00007f9b5e608609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f9b60831133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f9b5cbbff80 (LWP 758735)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f9b60f11623 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f9b60eeef4c in g_thread_pool_free () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f9b60d03eed in init_klass_pool (klass=<optimized out>) at gsttask.c:161
#4  0x00007f9b60d04446 in gst_task_cleanup_all () at gsttask.c:381
#5  0x00007f9b60c8487c in gst_deinit () at gst.c:1095
#6  0x00007f9b633f9ae1 in WebKit::WebProcessMainWPE::platformFinalize() (ocEE3endEv=<error reading variable: Unhandled dwarf expression opcode 0x0>) at ../../Source/WebKit/WebProcess/wpe/WebProcessMainWPE.cpp:68
#7  0x00007f9b633f9991 in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run(int, char**) (ocEE3endEv=Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0xe5: 
#8  0x00007f9b633f8fa0 in WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainWPE>(int, char**) (e *, std::unique_ptr<IPC::MessageReceiveQueue, std::default_delete<IPC::MessageReceiveQueue> > > >=Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0xf: 
#9  0x00007f9b633f8dcb in WebKit::WebProcessMain(int, char**) (e *, std::unique_ptr<IPC::MessageReceiveQueue, std::default_delete<IPC::MessageReceiveQueue> > > >=Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x8c73: 
#10 0x0000000000401152 in main(int, char**) (argc=3, argv=0x7fff43ca15a8) at ../../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:31

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220520/00cf9ad3/attachment-0001.htm>


More information about the webkit-unassigned mailing list