| Summary: | GPUP GraphicsContextGL creation failure cannot be detected | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Kimmo Kinnunen <kkinnunen> | ||||||||||||||
| Component: | WebGL | Assignee: | Kimmo Kinnunen <kkinnunen> | ||||||||||||||
| Status: | RESOLVED FIXED | ||||||||||||||||
| Severity: | Normal | CC: | annulen, cdumez, changseok, cmarcelo, crzwdjk, dino, esprehn+autocc, ews-watchlist, gyuyoung.kim, kbr, kkinnunen, koivisto, kondapallykalyan, lmoura, luiz, ryuan.choi, sergio, webkit-bug-importer | ||||||||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||||||||
| Version: | WebKit Local Build | ||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||
| OS: | Unspecified | ||||||||||||||||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=233712 | ||||||||||||||||
| Bug Depends on: | |||||||||||||||||
| Bug Blocks: | 221664 | ||||||||||||||||
| Attachments: |
|
||||||||||||||||
|
Description
Kimmo Kinnunen
2021-11-26 03:35:05 PST
Created attachment 445194 [details]
Patch
Created attachment 445197 [details]
Patch
Created attachment 445199 [details]
Patch
Comment on attachment 445199 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=445199&action=review > Source/WebCore/ChangeLog:22 > + Fix a bug where GPUP WebGL would use in-process context if the lost context would be recreated. > + > + No new tests, a refactor. Not quite a pure refactoring if it fixes a bug. Comment on attachment 445199 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=445199&action=review > Source/WebCore/platform/graphics/WebProcessGraphicsContextGL.h:37 > +#include "GraphicsContextGL.h" > + > +#include <wtf/RefCounted.h> > + > +namespace WebCore { > + > +WEBCORE_EXPORT RefPtr<GraphicsContextGL> createWebProcessGraphicsContextGL(const GraphicsContextGLAttributes&); I guess this function could also just go to GraphicsContextGL.h? Created attachment 445258 [details]
Patch for landing
Created attachment 445262 [details]
Patch for landing
Created attachment 445265 [details]
Patch for landing
Committed r286209 (244591@main): <https://commits.webkit.org/244591@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 445265 [details]. This change has caused a number of crashes in offscreen canvas tests on GTK and WPE (which only run on GTK and WPE): http/wpt/offscreen-canvas/getContext-webgl.html [ Crash ] http/wpt/offscreen-canvas/transferToImageBitmap-webgl.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transferrable.html [ Crash ] imported/w3c/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transferrable.w.html [ Crash ] With a backtrace like the following: #0 0x00007f806d263347 in WebCore::WebGLRenderingContextBase::create(WebCore::CanvasBase&, WebCore::GraphicsContextGLAttributes&, WebCore::GraphicsContextGLWebGLVersion) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0 #1 0x00007f806d1e9ccc in WebCore::OffscreenCanvas::createContextWebGL(WebCore::OffscreenCanvas::RenderingContextType, WebCore::GraphicsContextGLAttributes&&) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0 #2 0x00007f806d1ea02e in WebCore::OffscreenCanvas::getContext(JSC::JSGlobalObject&, WebCore::OffscreenCanvas::RenderingContextType, WTF::Vector<JSC::Strong<JSC::Unknown, (JSC::ShouldStrongDestructorGrabLock)0>, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0 #3 0x00007f806c2e0447 in WebCore::jsOffscreenCanvasPrototypeFunction_getContext(JSC::JSGlobalObject*, JSC::CallFrame*) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0 #4 0x00007f8021cff1d8 in () #5 0x00007fff5faf3cb0 in () #6 0x00007f80682dc20d in op_call_slow_return_location () at /app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0 #7 0x0000000000000000 in () Not having debugged this in depth, my suspicion is that this change is not taking into account the offscreen case where hostWindow is null. |