<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>312157</bug_id>
          
          <creation_ts>2026-04-13 07:45:47 -0700</creation_ts>
          <short_desc>REGRESSION(308531@main): [GStreamer][1.28] Flaky crashes when running test fast/mediastream/error.html</short_desc>
          <delta_ts>2026-04-20 01:54:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=312138</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">philn</reporter>
          <assigned_to name="Philippe Normand">philn</assigned_to>
          <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2199730</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2026-04-13 07:45:47 -0700</bug_when>
    <thetext>Thread 1 (Thread 0x7fc687378540 (LWP 795436)):
#0  0x00007fc690ae6487 in gst_device_provider_stop (provider=provider@entry=0x7fc4483b4be3) at ../../../../../jhbuild/checkout/gstreamer/subprojects/gstreamer/gst/gstdeviceprovider.c:527
#1  0x00007fc690af8d0b in gst_device_monitor_stop (monitor=0x55faae36fa60) at ../../../../../jhbuild/checkout/gstreamer/subprojects/gstreamer/gst/gstdevicemonitor.c:682
#2  0x00007fc698529105 in non-virtual thunk to WebCore::GStreamerCaptureDeviceManager::devicesChanged() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#3  0x00007fc698502121 in WTF::Detail::CallableWrapper&lt;WebCore::RealtimeMediaSourceCenter::triggerDevicesChangedObservers()::{lambda(WTF::Ref&lt;WebCore::RealtimeMediaSourceCenterObserver, WTF::RawPtrTraits&lt;WebCore::RealtimeMediaSourceCenterObserver&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::RealtimeMediaSourceCenterObserver&gt; &gt;)#1}, void, WebCore::RealtimeMediaSourceCenterObserver&amp;&gt;::call(WebCore::RealtimeMediaSourceCenterObserver&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#4  0x00007fc69851f829 in WTF::WeakHashSet&lt;WebCore::RealtimeMediaSourceCenterObserver, WTF::DefaultWeakPtrImpl&gt;::forEach(WTF::Function&lt;void (WebCore::RealtimeMediaSourceCenterObserver&amp;)&gt; const&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#5  0x00007fc69851fb51 in WebCore::RealtimeMediaSourceCenter::triggerDevicesChangedObservers() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#6  0x00007fc69857ebd2 in WebCore::MockRealtimeMediaSourceCenter::resetDevices() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#7  0x00007fc6930ae03d in WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#8  0x00007fc6935c1bdb in IPC::Connection::dispatchMessage(IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#9  0x00007fc6935c3f95 in IPC::Connection::dispatchMessage(WTF::UniqueRef&lt;IPC::Decoder&gt;) [clone .part.0] () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#10 0x00007fc6935c4723 in IPC::Connection::dispatchOneIncomingMessage() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#11 0x00007fc695adb029 in WTF::RunLoop::performWork() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#12 0x00007fc695bc293d in WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#13 0x00007fc695bc63dd in WTF::RunLoop::{lambda(_GSource*, int (*)(void*), void*)#1}::_FUN(_GSource*, int (*)(void*), void*) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#14 0x00007fc68fc43f7f in g_main_dispatch (context=context@entry=0x55faae01ade0) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:3357
#15 0x00007fc68fc4608f in g_main_context_dispatch_unlocked (context=0x55faae01ade0) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:4208
#16 g_main_context_iterate_unlocked (context=0x55faae01ade0, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:4273
#17 0x00007fc68fc46a8f in g_main_loop_run (loop=0x55faae33ac50) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:4475
#18 0x00007fc690ad30b7 in gst_bus_poll (bus=0x55faae36fb90, events=&lt;optimized out&gt;, timeout=&lt;optimized out&gt;) at ../../../../../jhbuild/checkout/gstreamer/subprojects/gstreamer/gst/gstbus.c:1246
#19 0x00007fc6985396d1 in WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#20 0x00007fc698539a5c in WebCore::GStreamerCaptureDeviceManager::gstreamerDeviceWithUID(WTF::String const&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#21 0x00007fc698565be1 in WebCore::MockRealtimeAudioSourceGStreamer::MockRealtimeAudioSourceGStreamer(WTF::String&amp;&amp;, WTF::AtomString&amp;&amp;, WebCore::MediaDeviceHashSalts&amp;&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#22 0x00007fc698565fb3 in WebCore::MockRealtimeAudioSource::create(WTF::String&amp;&amp;, WTF::AtomString&amp;&amp;, WebCore::MediaDeviceHashSalts&amp;&amp;, WebCore::MediaConstraints const*, std::optional&lt;WTF::ObjectIdentifierGeneric&lt;WebCore::PageIdentifierType, WTF::ObjectIdentifierMainThreadAccessTraits&lt;unsigned long&gt;, unsigned long&gt; &gt;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#23 0x00007fc69857f0e7 in WebCore::MockRealtimeAudioSourceFactory::createAudioCaptureSource(WebCore::CaptureDevice const&amp;, WebCore::MediaDeviceHashSalts&amp;&amp;, WebCore::MediaConstraints const*, std::optional&lt;WTF::ObjectIdentifierGeneric&lt;WebCore::PageIdentifierType, WTF::ObjectIdentifierMainThreadAccessTraits&lt;unsigned long&gt;, unsigned long&gt; &gt;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#24 0x00007fc69850724c in WebCore::RealtimeMediaSourceCenter::getCapabilities(WebCore::CaptureDevice const&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#25 0x00007fc692ef8e1f in WTF::CompactMapper&lt;WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)::{lambda(auto:1&amp;&amp;)#1}::operator()&lt;WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; &gt;(WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)::{lambda(auto:1&amp;)#1}, WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, void&gt;::compactMap(WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)::{lambda(auto:1&amp;&amp;)#1}::operator()&lt;WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; &gt;(WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)::{lambda(auto:1&amp;)#1} const&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#26 0x00007fc692efa3c1 in WTF::Detail::CallableWrapper&lt;WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)::{lambda(auto:1&amp;&amp;)#1}, void, WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;&gt;::call(WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#27 0x00007fc698507943 in WTF::Detail::CallableWrapper&lt;WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices(WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)::{lambda()#1}, void&gt;::call() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#28 0x00007fc6933cadf1 in WTF::Ref&lt;WTF::CallbackAggregatorOnThread&lt;(WTF::DestructionThread)0&gt;, WTF::RawPtrTraits&lt;WTF::CallbackAggregatorOnThread&lt;(WTF::DestructionThread)0&gt; &gt;, WTF::DefaultRefDerefTraits&lt;WTF::CallbackAggregatorOnThread&lt;(WTF::DestructionThread)0&gt; &gt; &gt;::~Ref() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#29 0x00007fc698507a6c in WebCore::RealtimeMediaSourceCenter::enumerateDevices(bool, bool, bool, bool, WTF::CompletionHandler&lt;void ()&gt;&amp;&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#30 0x00007fc698507d60 in WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices(WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#31 0x00007fc692ef8766 in WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#32 0x00007fc693129318 in void IPC::handleMessageAsync&lt;Messages::UserMediaCaptureManager::GetMediaStreamDevices, IPC::Connection, WebKit::UserMediaCaptureManager, WebKit::UserMediaCaptureManager, void (bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::UserMediaCaptureManager*, void (WebKit::UserMediaCaptureManager::*)(bool, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&gt;&amp;&amp;)) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#33 0x00007fc69312c2e8 in non-virtual thunk to WebKit::UserMediaCaptureManager::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#34 0x00007fc6935cb5b3 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#35 0x00007fc6935d8ee3 in WebKit::AuxiliaryProcess::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#36 0x00007fc693037469 in WebKit::AuxiliaryProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#37 0x00007fc6935c1bdb in IPC::Connection::dispatchMessage(IPC::Decoder&amp;) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#38 0x00007fc6935c3f95 in IPC::Connection::dispatchMessage(WTF::UniqueRef&lt;IPC::Decoder&gt;) [clone .part.0] () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#39 0x00007fc6935c4723 in IPC::Connection::dispatchOneIncomingMessage() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#40 0x00007fc695adb029 in WTF::RunLoop::performWork() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#41 0x00007fc695bc293d in WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#42 0x00007fc695bc63dd in WTF::RunLoop::{lambda(_GSource*, int (*)(void*), void*)#1}::_FUN(_GSource*, int (*)(void*), void*) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#43 0x00007fc68fc43f7f in g_main_dispatch (context=context@entry=0x55faae01ade0) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:3357
#44 0x00007fc68fc466f8 in g_main_context_dispatch_unlocked (context=0x55faae01ade0) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:4208
#45 g_main_context_dispatch (context=0x55faae01ade0) at ../../../../../jhbuild/checkout/glib/glib/gmain.c:4196
#46 0x00007fc695bc4794 in WTF::RunLoop::runGLibMainLoopIteration(WTF::RunLoop::MayBlock) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#47 0x00007fc695bc4a32 in WTF::RunLoop::run() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#48 0x00007fc693d3ba66 in int WebKit::AuxiliaryProcessMain&lt;WebKit::WebProcessMainWPE&gt;(int, char**) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1
#49 0x00007fc690c181ca in __libc_start_call_main (main=main@entry=0x55fa701967d0 &lt;main&gt;, argc=argc@entry=4, argv=argv@entry=0x7fff9c1081b8) at ../sysdeps/nptl/libc_start_call_main.h:58
#50 0x00007fc690c1828b in __libc_start_main_impl (main=0x55fa701967d0 &lt;main&gt;, argc=4, argv=0x7fff9c1081b8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fff9c1081a8) at ../csu/libc-start.c:360
#51 0x000055fa70196705 in _start ()

STDERR: 
STDERR: warning: Can&apos;t open file /memfd:WebKitSharedMemory (deleted) during file-backed mapping note processing
STDERR: 0:00:00.085109747     795436     795436 ERROR                GST_BUS gstbus.c:1086:gst_bus_remove_watch:&lt;bus0&gt; trying to remove signal watch with gst_bus_remove_watch()
STDERR: 0:00:00.085430559     795436     795627 ERROR                  pulse pulsedeviceprovider.c:571:gst_pulse_device_provider_start:&lt;pulsedeviceprovider0&gt; Failed to connect: Connection refused
STDERR: WPEWebProcess terminated (pid 795436) for reason: crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201334</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2026-04-16 18:58:21 -0700</bug_when>
    <thetext>They are randomly crashing.

History : https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=fast%2Fmediastream%2Ferror.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fpermissions-policy%2Freporting%2Freport-to-single-endpoint.https.sub.html&amp;platform=GTK&amp;platform=WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201965</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2026-04-19 03:25:42 -0700</bug_when>
    <thetext>Something odd in the bt is that WebCore::MockRealtimeMediaSourceCenter::resetDevices() in frame 6 is triggered from the web process main loop that was woken up (by the gstbus watch GSource) and processed an incoming IPC message...

Our usage of gst_bus_poll() in 308531@main introduced re-entrancy, which is veryyyyyyy bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201966</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2026-04-19 03:34:42 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/63066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2202163</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-20 01:53:58 -0700</bug_when>
    <thetext>Committed 311567@main (ab6652549a6d): &lt;https://commits.webkit.org/311567@main&gt;

Reviewed commits have been landed. Closing PR #63066 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2202165</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-20 01:54:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/175149845&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>