RESOLVED DUPLICATE of bug 237674 238865
Using 'opener' to open a page with more than one canvas element causes the process to hang
https://bugs.webkit.org/show_bug.cgi?id=238865
Summary Using 'opener' to open a page with more than one canvas element causes the pr...
i
Reported 2022-04-06 06:10:10 PDT
Created attachment 456813 [details] case 1 Case 1: When you click the button 'window.open' will use default features like 'opener' to open the current URL(https://output.jsbin.com/hezopac) with the search param '?canvas' to run canvas animation. Before the target page(https://output.jsbin.com/hezopac?canvas) is ready, it will create some new offscreen canvas elements for the test. And then those two pages that use the same process will be hung when ctx.fillText called more than 10,000. Case 2: Disable create the offscreen canvas and click the button 'window.open' at the bootstrap page1(https://output.jsbin.com/yotawur) to create the test page2(https://output.jsbin.com/yotawur?canvas). And then click the button 'window.open' on page2 to open the test page3 with the same URL(https://output.jsbin.com/yotawur?canvas). And then those third pages that use the same process also will be hung.
Attachments
case 1 (113.63 KB, video/mp4)
2022-04-06 06:10 PDT, i
no flags
Radar WebKit Bug Importer
Comment 1 2022-04-06 08:38:28 PDT
Simon Fraser (smfr)
Comment 2 2022-04-06 10:26:05 PDT
Does this reproduce this in Safari 15.4 (macOS) and/or iOS 15.4?
Simon Fraser (smfr)
Comment 3 2022-04-06 10:29:25 PDT
Neve mind, I can reproduce in a recent build.
Simon Fraser (smfr)
Comment 4 2022-04-06 10:32:29 PDT
WebContent is blocked on: + ! : 8990 WebCore::RenderHTMLCanvas::paintReplaced(WebCore::PaintInfo&, WebCore::LayoutPoint const&) (in WebCore) + 705 [0x5332bf4b1] + ! : 8990 WebCore::HTMLCanvasElement::paint(WebCore::GraphicsContext&, WebCore::LayoutRect const&) (in WebCore) + 695 [0x5346f4ae7] + ! : 8989 WebCore::ConcreteImageBuffer<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::draw(WebCore::GraphicsContext&, WebCore::FloatRect const&, WebCore::FloatRect const&, WebCore::ImagePaintingOptions const&) (in WebKit) + 53 [0x52ad64c41] + ! : | 8988 WebKit::RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::flushDrawingContext() (in WebKit) + 142 [0x52b2ed702] + ! : | + 8987 WebKit::RemoteRenderingBackendProxy::waitForDidFlush() (in WebKit) + 90 [0x52b28077c] + ! : | + ! 8987 IPC::Connection::waitForMessage(IPC::MessageName, unsigned long long, IPC::Timeout, WTF::OptionSet<IPC::WaitForOption>) (in WebKit) + 458 [0x52af43214] + ! : | + ! 8987 bool WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (in WebKit) + 154 [0x52ac03f64] + ! : | + ! 8986 WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) (in JavaScriptCore) + 2263 [0x529ae0057] + ! : | + ! : 8986 _pthread_cond_wait (in libsystem_pthread.dylib) + 1249 [0x7ff804c7ea4f] + ! : | + ! : 8986 __psynch_cvwait (in libsystem_kernel.dylib) + 10 [0x7ff804c4440a] + ! : | + ! 1 WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) (in JavaScriptCore) + 114 [0x529adf7f2] GPU Process is idle.
Simon Fraser (smfr)
Comment 5 2022-04-06 10:36:27 PDT
We're hitting "Exceeded timeout while waiting for flush in remote rendering backend: 62."
Kimmo Kinnunen
Comment 6 2022-04-07 03:54:31 PDT
Thanks for the report. I think this has the same cause as bug 237674. That bug should be used to track the fix and then the fix should be used to verify fixing also this test case. *** This bug has been marked as a duplicate of bug 237674 ***
Note You need to log in before you can comment on or make changes to this bug.