Title: [280326] trunk/Source/WebKit
Revision
280326
Author
[email protected]
Date
2021-07-26 17:02:30 -0700 (Mon, 26 Jul 2021)

Log Message

REGRESSION: [iOS] ASSERTION FAILED: !m_useCount in WebKit::SandboxExtension::~SandboxExtension()
https://bugs.webkit.org/show_bug.cgi?id=228171
<rdar://problem/80926509>

Reviewed by Eric Carlson.

SandboxExtension expects to be revoked before it is destroyed, something that is done by
RemoteMediaPlayerProxy::invalidate(). However, invalidate() won't be called if the
RemoteMediaPlayerManagerProxy is destroyed before all its proxies are invalidated.

Ensure every RemoteMediaPlayerProxy contained by the RemoteMediaPlayerManagerProxy is
invalidated in RemoteMediaPlayerManagerProxy's destructor.

* GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy):
* GPUProcess/media/RemoteMediaPlayerManagerProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (280325 => 280326)


--- trunk/Source/WebKit/ChangeLog	2021-07-26 23:58:23 UTC (rev 280325)
+++ trunk/Source/WebKit/ChangeLog	2021-07-27 00:02:30 UTC (rev 280326)
@@ -1,3 +1,22 @@
+2021-07-26  Jer Noble  <[email protected]>
+
+        REGRESSION: [iOS] ASSERTION FAILED: !m_useCount in WebKit::SandboxExtension::~SandboxExtension()
+        https://bugs.webkit.org/show_bug.cgi?id=228171
+        <rdar://problem/80926509>
+
+        Reviewed by Eric Carlson.
+
+        SandboxExtension expects to be revoked before it is destroyed, something that is done by
+        RemoteMediaPlayerProxy::invalidate(). However, invalidate() won't be called if the 
+        RemoteMediaPlayerManagerProxy is destroyed before all its proxies are invalidated.
+
+        Ensure every RemoteMediaPlayerProxy contained by the RemoteMediaPlayerManagerProxy is
+        invalidated in RemoteMediaPlayerManagerProxy's destructor.
+
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
+        (WebKit::RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy):
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
+
 2021-07-26  Alex Christensen  <[email protected]>
 
         WKUserContentController.removeAllScriptMessageHandlers() doesn't release the message handlers

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp (280325 => 280326)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp	2021-07-26 23:58:23 UTC (rev 280325)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp	2021-07-27 00:02:30 UTC (rev 280326)
@@ -55,6 +55,10 @@
 
 RemoteMediaPlayerManagerProxy::~RemoteMediaPlayerManagerProxy()
 {
+    auto proxies = std::exchange(m_proxies, { });
+
+    for (auto& proxy : proxies.values())
+        proxy->invalidate();
 }
 
 void RemoteMediaPlayerManagerProxy::createMediaPlayer(MediaPlayerIdentifier identifier, MediaPlayerEnums::MediaEngineIdentifier engineIdentifier, RemoteMediaPlayerProxyConfiguration&& proxyConfiguration)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to