REOPENED276343
[WebGPU] fast/webgpu/texture-supports-blending.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=276343
Summary [WebGPU] fast/webgpu/texture-supports-blending.html is a flaky failure
Mike Wyrzykowski
Reported 2024-07-08 17:37:22 PDT
[WebGPU] fast/webgpu/texture-supports-blending.html is a flaky failure
Attachments
Mike Wyrzykowski
Comment 1 2024-07-08 17:38:08 PDT
seems to only occur on x86: Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 WebCore 0x32e03f7b4 WTFCrashWithInfo(int, char const*, char const*, int) + 100 1 WebCore 0x32e5b0b04 WebCore::JSEventListener::ensureJSFunction(WebCore::ScriptExecutionContext&) const + 676 2 WebCore 0x32e66e810 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&, WebCore::Event&) + 168 3 WebCore 0x32f1e0410 WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&, WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener, WTF::RawPtrTraits<WebCore::RegisteredEventListener>, WTF::DefaultRefDerefTraits<WebCore::RegisteredEventListener>>, 1ul, WTF::CrashOnOverflow, 2ul, WTF::FastMalloc>, WebCore::EventTarget::EventInvokePhase) + 1072 4 WebCore 0x32f1dfde0 WebCore::EventTarget::fireEventListeners(WebCore::Event&, WebCore::EventTarget::EventInvokePhase) + 484 5 WebCore 0x32f1dfbdc WebCore::EventTarget::dispatchEvent(WebCore::Event&) + 436 6 WebCore 0x32efb2214 WebCore::ActiveDOMObject::queueTaskToDispatchEventInternal(WebCore::EventTarget&, WebCore::TaskSource, WTF::Ref<WebCore::Event, WTF::RawPtrTraits<WebCore::Event>, WTF::DefaultRefDerefTraits<WebCore::Event>>&&)::$_5::operator()() const + 64 7 WebCore 0x32efb2138 WTF::Detail::CallableWrapper<WebCore::ActiveDOMObject::queueTaskToDispatchEventInternal(WebCore::EventTarget&, WebCore::TaskSource, WTF::Ref<WebCore::Event, WTF::RawPtrTraits<WebCore::Event>, WTF::DefaultRefDerefTraits<WebCore::Event>>&&)::$_5, void>::call() + 28 8 WebCore 0x32e6048a0 WTF::Function<void ()>::operator()() const + 152 9 WebCore 0x32efb283c WebCore::ActiveDOMObjectEventDispatchTask::execute() + 52 10 WebCore 0x32f1cc24c WebCore::EventLoop::run(std::__1::optional<WTF::ApproximateTime>) + 472 11 WebCore 0x32f39ecf0 WebCore::WindowEventLoop::didReachTimeToRun() + 96 12 WebCore 0x32f3a22b0 decltype(*std::declval<WebCore::WindowEventLoop*&>().*std::declval<void (WebCore::WindowEventLoop::*&)()>()()) std::__1::__invoke[abi:sn170006]<void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&, void>(void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&) + 116 13 WebCore 0x32f3a2230 std::__1::__bind_return<void (WebCore::WindowEventLoop::*)(), std::__1::tuple<WebCore::WindowEventLoop*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::WindowEventLoop::*)(), std::__1::tuple<WebCore::WindowEventLoop*>, std::__1::tuple<>>::value>::type std::__1::__apply_functor[abi:sn170006]<void (WebCore::WindowEventLoop::*)(), std::__1::tuple<WebCore::WindowEventLoop*>, 0ul, std::__1::tuple<>>(void (WebCore::WindowEventLoop::*&)(), std::__1::tuple<WebCore::WindowEventLoop*>&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) + 60 14 WebCore 0x32f3a21e8 std::__1::__bind_return<void (WebCore::WindowEventLoop::*)(), std::__1::tuple<WebCore::WindowEventLoop*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::WindowEventLoop::*)(), std::__1::tuple<WebCore::WindowEventLoop*>, std::__1::tuple<>>::value>::type std::__1::__bind<void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*>::operator()[abi:sn170006]<>() + 36 15 WebCore 0x32f3a218c WTF::Detail::CallableWrapper<std::__1::__bind<void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*>, void>::call() + 28 16 WebCore 0x32e6048a0 WTF::Function<void ()>::operator()() const + 152 17 WebCore 0x32af96b24 WebCore::Timer::fired() + 28
Radar WebKit Bug Importer
Comment 2 2024-07-08 17:41:57 PDT
Mike Wyrzykowski
Comment 3 2024-07-08 17:42:07 PDT
Nevermind, reproduces on arm as well
Mike Wyrzykowski
Comment 4 2024-07-08 17:43:45 PDT
EWS
Comment 5 2024-07-08 17:46:56 PDT
Committed 280758@main (7773036f4563): <https://commits.webkit.org/280758@main> Reviewed commits have been landed. Closing PR #30587 and removing active labels.
Mike Wyrzykowski
Comment 6 2024-07-08 17:47:57 PDT
change was skips the test in Debug, we should figure out why JSEventListener::ensureJSFunction is crashing
Alexey Proskuryakov
Comment 7 2024-07-09 10:09:53 PDT
This assertion means that a JS wrapper has been collected when it was still needed, i.e. something is wrong with GC marking. In release builds, the symptom will be failing to invoke an event listener.
Mike Wyrzykowski
Comment 8 2024-07-09 10:13:42 PDT
Looking at our usage of queueTaskToDispatchEvent, my guess would be this code in GPUDevice.cpp:593 is related: if (eventType == WebCore::eventNames().uncapturederrorEvent) { m_backing->resolveUncapturedErrorEvent([eventType, weakThis = WeakPtr { *this }](bool hasUncapturedError, std::optional<WebGPU::Error>&& error) { if (!weakThis || !hasUncapturedError) return; queueTaskToDispatchEvent(*weakThis.get(), TaskSource::WebGPU, GPUUncapturedErrorEvent::create(WebCore::eventNames().uncapturederrorEvent, GPUUncapturedErrorEventInit { .error = createGPUErrorFromWebGPUError(error) })); }); }
Note You need to log in before you can comment on or make changes to this bug.