RESOLVED FIXED Bug 233517
GPUP GraphicsContextGL creation failure cannot be detected
https://bugs.webkit.org/show_bug.cgi?id=233517
Summary GPUP GraphicsContextGL creation failure cannot be detected
Kimmo Kinnunen
Reported 2021-11-26 03:35:05 PST
GPUP GraphicsContextGL creation failure cannot be detected The WebGLRenderingContextBase first tries to create GPUP GraphicsContextGL. If this fails, it tries to create WP GraphicsContextGL. This is not consistent. ChromeClient should decide what type to instantiate.
Attachments
Patch (22.02 KB, patch)
2021-11-26 05:44 PST, Kimmo Kinnunen
ews-feeder: commit-queue-
Patch (22.47 KB, patch)
2021-11-26 06:02 PST, Kimmo Kinnunen
no flags
Patch (24.17 KB, patch)
2021-11-26 06:33 PST, Kimmo Kinnunen
no flags
Patch for landing (18.97 KB, patch)
2021-11-29 01:57 PST, Kimmo Kinnunen
ews-feeder: commit-queue-
Patch for landing (18.73 KB, patch)
2021-11-29 02:43 PST, Kimmo Kinnunen
no flags
Patch for landing (18.46 KB, patch)
2021-11-29 04:06 PST, Kimmo Kinnunen
no flags
Kimmo Kinnunen
Comment 1 2021-11-26 05:44:38 PST
Kimmo Kinnunen
Comment 2 2021-11-26 06:02:14 PST
Kimmo Kinnunen
Comment 3 2021-11-26 06:33:17 PST
Antti Koivisto
Comment 4 2021-11-29 01:16:56 PST
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.
Antti Koivisto
Comment 5 2021-11-29 01:19:15 PST
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?
Kimmo Kinnunen
Comment 6 2021-11-29 01:57:50 PST
Created attachment 445258 [details] Patch for landing
Kimmo Kinnunen
Comment 7 2021-11-29 02:43:14 PST
Created attachment 445262 [details] Patch for landing
Kimmo Kinnunen
Comment 8 2021-11-29 04:06:27 PST
Created attachment 445265 [details] Patch for landing
EWS
Comment 9 2021-11-29 05:05:37 PST
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].
Radar WebKit Bug Importer
Comment 10 2021-11-29 05:06:26 PST
Arcady Goldmints-Orlov
Comment 11 2021-12-01 09:23:46 PST
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.
Note You need to log in before you can comment on or make changes to this bug.