Bug 276343
| Summary: | [WebGPU] fast/webgpu/texture-supports-blending.html is a flaky failure | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Mike Wyrzykowski <mwyrzykowski> |
| Component: | WebGPU | Assignee: | Mike Wyrzykowski <mwyrzykowski> |
| Status: | REOPENED | ||
| Severity: | Normal | CC: | cdumez, mwyrzykowski, rniwa, tzagallo, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Mike Wyrzykowski
[WebGPU] fast/webgpu/texture-supports-blending.html is a flaky failure
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Mike Wyrzykowski
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
<rdar://problem/131345434>
Mike Wyrzykowski
Nevermind, reproduces on arm as well
Mike Wyrzykowski
Pull request: https://github.com/WebKit/WebKit/pull/30587
EWS
Committed 280758@main (7773036f4563): <https://commits.webkit.org/280758@main>
Reviewed commits have been landed. Closing PR #30587 and removing active labels.
Mike Wyrzykowski
change was skips the test in Debug, we should figure out why JSEventListener::ensureJSFunction is crashing
Alexey Proskuryakov
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
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) }));
});
}