⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 280694 in webkit


Ignore:
Timestamp:
Aug 5, 2021, 9:26:55 AM (5 years ago)
Author:
Russell Epstein
Message:

Cherry-pick r280639. rdar://problem/81568951

[GPU Process] REGRESSION: iCloud Photos Web app may crash WebProcess once the GPUProcess is relaunched
https://bugs.webkit.org/show_bug.cgi?id=228665

Reviewed by Simon Fraser.

When the GPUProcess is relaunched, ensure NativeImage is detached from
the RemoteResourceCacheProxy once it is removed from its m_nativeImages.

Otherwise the NativeImage later will ask RemoteResourceCacheProxy to
release its corresponding NativeImage from RemoteResourceCache even
though it was destroyed when the GPUProcess was relaunched.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp: (WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy): (WebKit::RemoteResourceCacheProxy::clearNativeImageMap): (WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280639 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-612.1.27.0-branch/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-612.1.27.0-branch/Source/WebKit/ChangeLog

    r280692 r280694  
     12021-08-05  Russell Epstein  <repstein@apple.com>
     2
     3        Cherry-pick r280639. rdar://problem/81568951
     4
     5    [GPU Process] REGRESSION: iCloud Photos Web app may crash WebProcess once the GPUProcess is relaunched
     6    https://bugs.webkit.org/show_bug.cgi?id=228665
     7   
     8    Reviewed by Simon Fraser.
     9   
     10    When the GPUProcess is relaunched, ensure NativeImage is detached from
     11    the RemoteResourceCacheProxy once it is removed from its m_nativeImages.
     12   
     13    Otherwise the NativeImage later will ask RemoteResourceCacheProxy to
     14    release its corresponding NativeImage from RemoteResourceCache even
     15    though it was destroyed when the GPUProcess was relaunched.
     16   
     17    * WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
     18    (WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
     19    (WebKit::RemoteResourceCacheProxy::clearNativeImageMap):
     20    (WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
     21    * WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
     22   
     23   
     24    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280639 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     25
     26    2021-08-04  Said Abou-Hallawa  <said@apple.com>
     27
     28            [GPU Process] REGRESSION: iCloud Photos Web app may crash WebProcess once the GPUProcess is relaunched
     29            https://bugs.webkit.org/show_bug.cgi?id=228665
     30
     31            Reviewed by Simon Fraser.
     32
     33            When the GPUProcess is relaunched, ensure NativeImage is detached from
     34            the RemoteResourceCacheProxy once it is removed from its m_nativeImages.
     35
     36            Otherwise the NativeImage later will ask RemoteResourceCacheProxy to
     37            release its corresponding NativeImage from RemoteResourceCache even
     38            though it was destroyed when the GPUProcess was relaunched.
     39
     40            * WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
     41            (WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
     42            (WebKit::RemoteResourceCacheProxy::clearNativeImageMap):
     43            (WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
     44            * WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
     45
    1462021-08-05  Russell Epstein  <repstein@apple.com>
    247
  • branches/safari-612.1.27.0-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp

    r280401 r280694  
    4242RemoteResourceCacheProxy::~RemoteResourceCacheProxy()
    4343{
    44     for (auto& nativeImageState : m_nativeImages.values())
    45         nativeImageState.image->removeObserver(*this);
     44    clearNativeImageMap();
    4645}
    4746
     
    152151
    153152    m_remoteRenderingBackendProxy.releaseRemoteResource(renderingResourceIdentifier, useCount);
     153}
     154
     155void RemoteResourceCacheProxy::clearNativeImageMap()
     156{
     157    for (auto& nativeImageState : m_nativeImages.values())
     158        nativeImageState.image->removeObserver(*this);
     159    m_nativeImages.clear();
    154160}
    155161
     
    205211        item.imageBuffer->clearBackend();
    206212    }
    207     m_nativeImages.clear();
     213    clearNativeImageMap();
    208214    clearFontMap();
    209215}
  • branches/safari-612.1.27.0-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h

    r280401 r280694  
    8080   
    8181    void releaseNativeImage(WebCore::RenderingResourceIdentifier) override;
     82    void clearNativeImageMap();
     83
    8284    void finalizeRenderingUpdateForFonts();
    8385    void prepareForNextRenderingUpdate();
Note: See TracChangeset for help on using the changeset viewer.