Title: [256447] trunk/Source/WebCore
Revision
256447
Author
[email protected]
Date
2020-02-12 10:24:16 -0800 (Wed, 12 Feb 2020)

Log Message

RELEASE_ASSERT() under WebSWClientConnection::didResolveRegistrationPromise()
https://bugs.webkit.org/show_bug.cgi?id=207637
<rdar://problem/59093490>

Reviewed by Youenn Fablet.

We were capturing data by reference in the notifyIfExitEarly ScopeExit lambda and then capturing it
in the task posted to the event loop, which was unsafe.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (256446 => 256447)


--- trunk/Source/WebCore/ChangeLog	2020-02-12 18:07:37 UTC (rev 256446)
+++ trunk/Source/WebCore/ChangeLog	2020-02-12 18:24:16 UTC (rev 256447)
@@ -1,3 +1,17 @@
+2020-02-12  Chris Dumez  <[email protected]>
+
+        RELEASE_ASSERT() under WebSWClientConnection::didResolveRegistrationPromise()
+        https://bugs.webkit.org/show_bug.cgi?id=207637
+        <rdar://problem/59093490>
+
+        Reviewed by Youenn Fablet.
+
+        We were capturing data by reference in the notifyIfExitEarly ScopeExit lambda and then capturing it
+        in the task posted to the event loop, which was unsafe.
+
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
+
 2020-02-12  Andres Gonzalez  <[email protected]>
 
         Support event notifications in IsolatedTree mode.

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (256446 => 256447)


--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2020-02-12 18:07:37 UTC (rev 256446)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2020-02-12 18:24:16 UTC (rev 256447)
@@ -383,9 +383,9 @@
         destroyJob(job);
     });
 
-    auto notifyIfExitEarly = WTF::makeScopeExit([this, protectedThis = makeRef(*this), &data, &shouldNotifyWhenResolved] {
+    auto notifyIfExitEarly = WTF::makeScopeExit([this, protectedThis = makeRef(*this), key = data.key, &shouldNotifyWhenResolved] {
         if (shouldNotifyWhenResolved == ShouldNotifyWhenResolved::Yes)
-            notifyRegistrationIsSettled(data.key);
+            notifyRegistrationIsSettled(key);
     });
 
     if (isStopped())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to