[Webkit-unassigned] [Bug 222888] New: [GStreamer] CaptureDevice monitor used from UIProcess

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Mar 7 09:18:08 PST 2021


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

            Bug ID: 222888
           Summary: [GStreamer] CaptureDevice monitor used from UIProcess
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Platform
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: pnormand at igalia.com
                CC: cgarcia at igalia.com

If the webapp starts listening on the devicechange event on the MediaDevice (hello jitsi), a RELEASE_ASSERT is hit, because the UserMediaPermissionRequestManager (WebProcess) sends a BeginMonitoringCaptureDevices message to the UIProcess...

(gdb) bt
#0  0x00007f1c1adf394e in WTFCrash() () at ../../Source/WTF/wtf/Assertions.cpp:295
#1  0x00007f1c277f1b6b in WTFCrashWithInfo(int, char const*, char const*, int) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:671
#2  0x00007f1c2945df7b in WebCore::ensureGStreamerInitialized() () at ../../Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:242
#3  0x00007f1c2d50d119 in WebCore::GStreamerCaptureDeviceManager::captureDevices() (this=0x7f1c34089080 <WebCore::GStreamerAudioCaptureDeviceManager::singleton()::manager>)
    at ../../Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:90
#4  0x00007f1c2c22ea24 in WebCore::CaptureDeviceManager::getCaptureDevices(WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)
    (this=0x7f1c34089080 <WebCore::GStreamerAudioCaptureDeviceManager::singleton()::manager>, callback=...) at ../../Source/WebCore/platform/mediastream/CaptureDeviceManager.h:38
#5  0x00007f1c2c241461 in WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices(WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)
    (this=0x7f1c3407e4f0 <WebCore::RealtimeMediaSourceCenter::singleton()::center>, completion=...) at ../../Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:153
#6  0x00007f1c2875593d in WebKit::UserMediaProcessManager::updateCaptureDevices(WebKit::UserMediaProcessManager::ShouldNotify)
    (this=0x7f1c34060400 <WebKit::UserMediaProcessManager::singleton()::manager>, shouldNotify=WebKit::UserMediaProcessManager::ShouldNotify::No) at ../../Source/WebKit/UIProcess/UserMediaProcessManager.cpp:222
#7  0x00007f1c287698a4 in WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27::operator()() const (this=0x7ffd8ca5a5b0) at ../../Source/WebKit/UIProcess/UserMediaProcessManager.cpp:261
#8  0x00007f1c2876986d in std::__invoke_impl<void, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(std::__invoke_other, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&) (__f=...) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/invoke.h:60
#9  0x00007f1c2876982d in std::__invoke<WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&) (__fn=...)
    at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/invoke.h:95
#10 0x00007f1c28769800 in std::call_once<WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(std::once_flag&, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&)::{lambda()#1}::operator()() const (this=0x7ffd8ca5a588) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/mutex:717
#11 0x00007f1c287697d7 in std::call_once<WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(std::once_flag&, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&)::{lambda()#2}::operator()() const (this=0x3) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/mutex:722
#12 0x00007f1c287697a9 in std::call_once<WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(std::once_flag&, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&)::{lambda()#2}::__invoke() () at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/mutex:722
#13 0x00007f1c14d34aaf in __pthread_once_slow (once_control=0x7f1c34060450 <WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::onceFlag>, init_routine=0x7f1c136bd810 <std::__once_proxy()>)
    at pthread_once.c:116
#14 0x00007f1c2876977b in __gthread_once(int*, void (*)()) (__once=0x7f1c34060450 <WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::onceFlag>, __func=0x7f1c136bd810 <std::__once_proxy()>)
    at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/x86_64-unknown-linux-gnu/bits/gthr-default.h:700
#15 0x00007f1c28755a68 in std::call_once<WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27>(std::once_flag&, WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices()::$_27&&)
    (__once=..., __f=...) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/10.2.0/../../../../include/c++/10.2.0/mutex:729
#16 0x00007f1c287559e4 in WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices() (this=0x7f1c34060400 <WebKit::UserMediaProcessManager::singleton()::manager>)
    at ../../Source/WebKit/UIProcess/UserMediaProcessManager.cpp:260
#17 0x00007f1c287dbaba in WebKit::WebPageProxy::beginMonitoringCaptureDevices() (this=0x7f07bc0f9000) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:8228
#18 0x00007f1c27be7b84 in IPC::callMemberFunctionImpl<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(), std::tuple<>>(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&, std::integer_sequence<unsigned long>) (object=0x7f07bc0f9000, function=(void (WebKit::WebPageProxy::*)(WebKit::WebPageProxy * const)) 0x7f1c287dba90 <WebKit::WebPageProxy::beginMonitoringCaptureDevices()>, args=...)
    at ../../Source/WebKit/Platform/IPC/HandleMessage.h:43
#19 0x00007f1c27be7af0 in IPC::callMemberFunction<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(), std::tuple<>, std::integer_sequence<unsigned long> >(std::tuple<>&&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)()) (args=..., object=0x7f07bc0f9000, function=(void (WebKit::WebPageProxy::*)(WebKit::WebPageProxy * const)) 0x7f1c287dba90 <WebKit::WebPageProxy::beginMonitoringCaptureDevices()>)
    at ../../Source/WebKit/Platform/IPC/HandleMessage.h:49
#20 0x00007f1c27bd9126 in IPC::handleMessage<Messages::WebPageProxy::BeginMonitoringCaptureDevices, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)()>(IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)()) (decoder=..., object=0x7f07bc0f9000, function=(void (WebKit::WebPageProxy::*)(WebKit::WebPageProxy * const)) 0x7f1c287dba90 <WebKit::WebPageProxy::beginMonitoringCaptureDevices()>)
    at ../../Source/WebKit/Platform/IPC/HandleMessage.h:121
#21 0x00007f1c27bd04bc in WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0x7f07bc0f9000, connection=..., decoder=...)
    at DerivedSources/WebKit/WebPageProxyMessageReceiver.cpp:1493
#22 0x00007f1c2859f481 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&) (this=0x7f07bc2fc4b8, connection=..., decoder=...)
    at ../../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
#23 0x00007f1c286ea52e in WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&) (this=0x7f07bc2fc480, connection=..., decoder=...)
    at ../../Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:221
#24 0x00007f1c288b4eef in WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0x7f07bc2fc480, connection=..., decoder=...) at ../../Source/WebKit/UIProcess/WebProcessProxy.cpp:819
#25 0x00007f1c2857976c in IPC::Connection::dispatchMessage(IPC::Decoder&) (this=0x7f1c104a8198, decoder=...) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1010
#26 0x00007f1c28579c2c in IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >) (this=0x7f1c104a8198, message=std::unique_ptr<IPC::Decoder> = {...})
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:1055
#27 0x00007f1c28578c11 in IPC::Connection::dispatchIncomingMessages() (this=0x7f1c104a8198) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1159
#28 0x00007f1c2857e352 in IPC::Connection::enqueueIncomingMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)::$_8::operator()() (this=0x7f1c104a18a8)
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:977
--Type <RET> for more, q to quit, c to continue without paging--
#29 0x00007f1c2857e2fe in WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)::$_8, void>::call() (this=0x7f1c104a18a0)
    at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#30 0x00007f1c277f1332 in WTF::Function<void ()>::operator()() const (this=0x7ffd8ca5b5b8) at DerivedSources/ForwardingHeaders/wtf/Function.h:83
#31 0x00007f1c1ae2c395 in WTF::RunLoop::performWork() (this=0x7f1c104f9000) at ../../Source/WTF/wtf/RunLoop.cpp:128
#32 0x00007f1c1aec571c in WTF::RunLoop::RunLoop()::$_1::operator()(void*) const (this=0x7f1c104f9000, userData=0x7f1c104f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:80
#33 0x00007f1c1aec56f5 in WTF::RunLoop::RunLoop()::$_1::__invoke(void*) (userData=0x7f1c104f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:79
#34 0x00007f1c1aec56a9 in WTF::RunLoop::$_0::operator()(_GSource*, int (*)(void*), void*) const
    (this=0xb13450, source=0xb13450, callback=0x7f1c1aec56e0 <WTF::RunLoop::RunLoop()::$_1::__invoke(void*)>, userData=0x7f1c104f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#35 0x00007f1c1aec4725 in WTF::RunLoop::$_0::__invoke(_GSource*, int (*)(void*), void*) (source=0xb13450, callback=0x7f1c1aec56e0 <WTF::RunLoop::RunLoop()::$_1::__invoke(void*)>, userData=0x7f1c104f9000)
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#36 0x00007f1c3418adbf in g_main_dispatch (context=0xb31460) at ../glib/gmain.c:3337
#37 g_main_context_dispatch (context=0xb31460) at ../glib/gmain.c:4055
#38 0x00007f1c3418b168 in g_main_context_iterate (context=context at entry=0xb31460, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at ../glib/gmain.c:4131
#39 0x00007f1c3418b233 in g_main_context_iteration (context=context at entry=0xb31460, may_block=may_block at entry=1) at ../glib/gmain.c:4196
#40 0x00007f1c13be962d in g_application_run (application=0xb97210 [GtkApplication], argc=-1935296492, argv=<optimized out>) at ../gio/gapplication.c:2560
#41 0x000000000041c23d in main (argc=1, argv=0x7ffd8ca5ba18) at ../../Tools/MiniBrowser/gtk/main.c:833

-- 
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/20210307/2f8042ca/attachment-0001.htm>


More information about the webkit-unassigned mailing list