Bug 222879
Summary: | [GPU Process] RemoteImageBufferProxy should not call flushDrawingContext() in its destructor | ||
---|---|---|---|
Product: | WebKit | Reporter: | Said Abou-Hallawa <sabouhallawa> |
Component: | Canvas | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | Normal | CC: | dino, webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar |
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Bug Depends on: | |||
Bug Blocks: | 222835 |
Said Abou-Hallawa
This was done mainly to restore the GraphicsContext of RemoteImageBuffer to its clean state before releasing it. However this may lead to the following crash:
0 com.apple.WebKit 0x000000010124d7a3 WTFCrashWithInfo(int, char const*, char const*, int) + 19
1 com.apple.WebKit 0x0000000101745c5d WebKit::WebProcess::ensureGPUProcessConnection() + 683
2 com.apple.WebKit 0x0000000101763df5 WebKit::RemoteRenderingBackendProxy::messageSenderConnection() const + 17
3 com.apple.WebKit 0x0000000101280fd5 IPC::MessageSender::sendMessage(std::__1::unique_ptr<IPC::Encoder, std::__1::default_delete<IPC::Encoder> >, WTF::OptionSet<IPC::SendOption>, WTF::Optional<std::__1::pair<WTF::CompletionHandler<void (IPC::Decoder*)>, unsigned long long> >&&) + 29
4 com.apple.WebKit 0x00000001017b0276 bool IPC::MessageSender::send<Messages::RemoteRenderingBackend::WakeUpAndApplyDisplayList>(Messages::RemoteRenderingBackend::WakeUpAndApplyDisplayList const&, unsigned long long, WTF::OptionSet<IPC::SendOption>) + 106
5 com.apple.WebKit 0x00000001017642da WebKit::RemoteRenderingBackendProxy::sendDeferredWakeupMessageIfNeeded() + 110
6 com.apple.WebKit 0x00000001017a9781 WebKit::RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::flushDrawingContextAsync() + 133
7 com.apple.WebKit 0x00000001017a96e6 WebKit::RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::flushDrawingContext() + 34
8 com.apple.WebKit 0x00000001017aa41e WebKit::RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::~RemoteImageBufferProxy() + 82
9 com.apple.WebKit 0x00000001017a95f0 WebKit::RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::~RemoteImageBufferProxy() + 14
This blocks enabling GPU Process for 2D canvas for web-platform-tests/html/canvas/element/line-styles/2d.line.cap.butt.html.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Said Abou-Hallawa
<rdar://problem/73610005>
Said Abou-Hallawa
This crash was happening because ImageBitmap was destroying its RemoteImageBufferProxy in a worker thread. We have to send at least a message from the WebP to the GPUP to destroy the corresponding RemoteImageBuffer. But this should happen in the main thread only. This is already fixed in r274164.
*** This bug has been marked as a duplicate of bug 222960 ***