RESOLVED FIXED312157
REGRESSION(308531@main): [GStreamer][1.28] Flaky crashes when running test fast/mediastream/error.html
https://bugs.webkit.org/show_bug.cgi?id=312157
Summary REGRESSION(308531@main): [GStreamer][1.28] Flaky crashes when running test fa...
Philippe Normand
Reported 2026-04-13 07:45:47 PDT
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<WebCore::RealtimeMediaSourceCenter::triggerDevicesChangedObservers()::{lambda(WTF::Ref<WebCore::RealtimeMediaSourceCenterObserver, WTF::RawPtrTraits<WebCore::RealtimeMediaSourceCenterObserver>, WTF::DefaultRefDerefTraits<WebCore::RealtimeMediaSourceCenterObserver> >)#1}, void, WebCore::RealtimeMediaSourceCenterObserver&>::call(WebCore::RealtimeMediaSourceCenterObserver&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #4 0x00007fc69851f829 in WTF::WeakHashSet<WebCore::RealtimeMediaSourceCenterObserver, WTF::DefaultWeakPtrImpl>::forEach(WTF::Function<void (WebCore::RealtimeMediaSourceCenterObserver&)> const&) () 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&, IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #8 0x00007fc6935c1bdb in IPC::Connection::dispatchMessage(IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #9 0x00007fc6935c3f95 in IPC::Connection::dispatchMessage(WTF::UniqueRef<IPC::Decoder>) [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=<optimized out>) 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=<optimized out>, timeout=<optimized out>) 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&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #21 0x00007fc698565be1 in WebCore::MockRealtimeAudioSourceGStreamer::MockRealtimeAudioSourceGStreamer(WTF::String&&, WTF::AtomString&&, WebCore::MediaDeviceHashSalts&&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #22 0x00007fc698565fb3 in WebCore::MockRealtimeAudioSource::create(WTF::String&&, WTF::AtomString&&, WebCore::MediaDeviceHashSalts&&, WebCore::MediaConstraints const*, std::optional<WTF::ObjectIdentifierGeneric<WebCore::PageIdentifierType, WTF::ObjectIdentifierMainThreadAccessTraits<unsigned long>, unsigned long> >) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #23 0x00007fc69857f0e7 in WebCore::MockRealtimeAudioSourceFactory::createAudioCaptureSource(WebCore::CaptureDevice const&, WebCore::MediaDeviceHashSalts&&, WebCore::MediaConstraints const*, std::optional<WTF::ObjectIdentifierGeneric<WebCore::PageIdentifierType, WTF::ObjectIdentifierMainThreadAccessTraits<unsigned long>, unsigned long> >) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #24 0x00007fc69850724c in WebCore::RealtimeMediaSourceCenter::getCapabilities(WebCore::CaptureDevice const&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #25 0x00007fc692ef8e1f in WTF::CompactMapper<WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::{lambda(auto:1&&)#1}::operator()<WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> >(WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)::{lambda(auto:1&)#1}, WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>, WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&, void>::compactMap(WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&, WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&, WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::{lambda(auto:1&&)#1}::operator()<WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> >(WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)::{lambda(auto:1&)#1} const&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #26 0x00007fc692efa3c1 in WTF::Detail::CallableWrapper<WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::{lambda(auto:1&&)#1}, void, WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&>::call(WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #27 0x00007fc698507943 in WTF::Detail::CallableWrapper<WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices(WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::{lambda()#1}, void>::call() () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #28 0x00007fc6933cadf1 in WTF::Ref<WTF::CallbackAggregatorOnThread<(WTF::DestructionThread)0>, WTF::RawPtrTraits<WTF::CallbackAggregatorOnThread<(WTF::DestructionThread)0> >, WTF::DefaultRefDerefTraits<WTF::CallbackAggregatorOnThread<(WTF::DestructionThread)0> > >::~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<void ()>&&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #30 0x00007fc698507d60 in WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices(WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDevice, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #31 0x00007fc692ef8766 in WebKit::UserMediaCaptureManager::getMediaStreamDevices(bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #32 0x00007fc693129318 in void IPC::handleMessageAsync<Messages::UserMediaCaptureManager::GetMediaStreamDevices, IPC::Connection, WebKit::UserMediaCaptureManager, WebKit::UserMediaCaptureManager, void (bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)>(IPC::Connection&, IPC::Decoder&, WebKit::UserMediaCaptureManager*, void (WebKit::UserMediaCaptureManager::*)(bool, WTF::CompletionHandler<void (WTF::Vector<WebCore::CaptureDeviceWithCapabilities, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #33 0x00007fc69312c2e8 in non-virtual thunk to WebKit::UserMediaCaptureManager::didReceiveMessage(IPC::Connection&, IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #34 0x00007fc6935cb5b3 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #35 0x00007fc6935d8ee3 in WebKit::AuxiliaryProcess::dispatchMessage(IPC::Connection&, IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #36 0x00007fc693037469 in WebKit::AuxiliaryProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #37 0x00007fc6935c1bdb in IPC::Connection::dispatchMessage(IPC::Decoder&) () from /sdk/webkit/WebKitBuild/WPE/Release/lib/libWPEWebKit-2.0.so.1 #38 0x00007fc6935c3f95 in IPC::Connection::dispatchMessage(WTF::UniqueRef<IPC::Decoder>) [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<WebKit::WebProcessMainWPE>(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 <main>, 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 <main>, argc=4, argv=0x7fff9c1081b8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff9c1081a8) at ../csu/libc-start.c:360 #51 0x000055fa70196705 in _start () STDERR: STDERR: warning: Can'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:<bus0> 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:<pulsedeviceprovider0> Failed to connect: Connection refused STDERR: WPEWebProcess terminated (pid 795436) for reason: crash
Attachments
Philippe Normand
Comment 2 2026-04-19 03:25:42 PDT
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.
Philippe Normand
Comment 3 2026-04-19 03:34:42 PDT
EWS
Comment 4 2026-04-20 01:53:58 PDT
Committed 311567@main (ab6652549a6d): <https://commits.webkit.org/311567@main> Reviewed commits have been landed. Closing PR #63066 and removing active labels.
Radar WebKit Bug Importer
Comment 5 2026-04-20 01:54:13 PDT
Note You need to log in before you can comment on or make changes to this bug.