[webkit-changes] [WebKit/WebKit] 8e47c0: WebContent crashes if GPUP WebGL remote context bu...

Kimmo Kinnunen noreply at github.com
Thu Feb 23 02:43:47 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8e47c0fabb97ea07aa6d12bea0c47b791be19250
      https://github.com/WebKit/WebKit/commit/8e47c0fabb97ea07aa6d12bea0c47b791be19250
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2023-02-23 (Thu, 23 Feb 2023)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/webgl/webgl-fail-platform-context-creation-no-crash.html
    A LayoutTests/webgl/webgl-fail-remote-context-ipc-buffer-allocation-no-crash-expected.txt
    A LayoutTests/webgl/webgl-fail-remote-context-ipc-buffer-allocation-no-crash.html
    M Source/WebCore/html/canvas/WebGLContextAttributes.idl
    M Source/WebCore/platform/graphics/GraphicsContextGLAttributes.h
    M Source/WebKit/Platform/IPC/StreamClientConnection.cpp
    M Source/WebKit/Platform/IPC/StreamClientConnection.h
    M Source/WebKit/Platform/IPC/StreamClientConnectionBuffer.h
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm
    M Source/WebKit/WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp
    M Tools/TestWebKitAPI/Tests/IPC/StreamConnectionBufferTests.cpp
    M Tools/TestWebKitAPI/Tests/IPC/StreamConnectionTests.cpp

  Log Message:
  -----------
  WebContent crashes if GPUP WebGL remote context buffer cannot be allocated
https://bugs.webkit.org/show_bug.cgi?id=252732
rdar://105612611

Reviewed by Geoffrey Garen.

Change RemoteGraphicsContextGLProxy and RemoteGPUProxy creation to be
nullable. If the IPC stream connection buffer allocation fails,
return gracefully instead of previous inteded CRASH().

Preserves the CRASH() in RemoteRenderingBackendProxy as current code
structure is such that it is expected always to be succesfully created.

* LayoutTests/webgl/webgl-fail-platform-context-creation-no-crash.html:
Remove a unneeded <script> from a similar test as below.
* LayoutTests/webgl/webgl-fail-remote-context-ipc-buffer-allocation-no-crash-expected.txt: Added.
* LayoutTests/webgl/webgl-fail-remote-context-ipc-buffer-allocation-no-crash.html: Copied from LayoutTests/webgl/webgl-fail-platform-context-creation-no-crash.html.
Add the test.
* Source/WebCore/html/canvas/WebGLContextAttributes.idl:
* Source/WebCore/platform/graphics/GraphicsContextGLAttributes.h:
* Source/WebKit/Platform/IPC/StreamClientConnection.cpp:
(IPC::StreamClientConnection::create):
(IPC::StreamClientConnection::StreamClientConnection):
* Source/WebKit/Platform/IPC/StreamClientConnection.h:
* Source/WebKit/Platform/IPC/StreamClientConnectionBuffer.h:
(IPC::StreamClientConnectionBuffer::create):
(IPC::StreamClientConnectionBuffer::StreamClientConnectionBuffer):
(IPC::StreamClientConnectionBuffer::createMemory): Deleted.
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
(WebKit::RemoteGraphicsContextGLProxy::create):
(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::initializeIPC):
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::ensureGPUProcessConnection):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:
(WebKit::RemoteGPUProxy::create):
(WebKit::RemoteGPUProxy::RemoteGPUProxy):
(WebKit::RemoteGPUProxy::initializeIPC):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm:
(WebKit::RemoteGraphicsContextGLProxy::platformCreate):
(WebKit::RemoteGraphicsContextGLProxy::create): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp:
(WebKit::RemoteGraphicsContextGLProxy::platformCreate):
(WebKit::RemoteGraphicsContextGLProxy::create): Deleted.
* Tools/TestWebKitAPI/Tests/IPC/StreamConnectionBufferTests.cpp:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/IPC/StreamConnectionTests.cpp:
(TestWebKitAPI::TEST_F):

Canonical link: https://commits.webkit.org/260738@main




More information about the webkit-changes mailing list