WebKit Bugzilla
Attachment 342818 Details for
Bug 186674
: Need to properly handle removal of worker in SWServer::unregisterServiceWorkerClient timer lambda
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
WIP
bug-186674-20180615095244.patch (text/plain), 2.29 KB, created by
youenn fablet
on 2018-06-15 09:52:44 PDT
(
hide
)
Description:
WIP
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2018-06-15 09:52:44 PDT
Size:
2.29 KB
patch
obsolete
>Subversion Revision: 232870 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 3d33706a78571adff99b8941251844c8fec70024..93f1328a22f33888f29635bbd5333f0df049b211 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,19 @@ >+2018-06-15 Youenn Fablet <youenn@apple.com> >+ >+ Need to properly handle removal of worker in SWServer::unregisterServiceWorkerClient timer lambda >+ https://bugs.webkit.org/show_bug.cgi?id=186674 >+ <rdar://problem/40974812> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Test to be written. >+ >+ While looping over the running workers map and trying to terminate some of the workers, >+ there is a chance that the map will be modified synchronously which may affect iterating the map. >+ >+ * workers/service/server/SWServer.cpp: >+ (WebCore::SWServer::unregisterServiceWorkerClient): >+ > 2018-06-15 Zalan Bujtas <zalan@apple.com> > > [LFC] Add FormattingContextLayout logging channel >diff --git a/Source/WebCore/workers/service/server/SWServer.cpp b/Source/WebCore/workers/service/server/SWServer.cpp >index 0310001af7601961c81e7a30fe5bb69b52bd4461..714fd380ed29084253302dd1e2a8f2be75e8bb2f 100644 >--- a/Source/WebCore/workers/service/server/SWServer.cpp >+++ b/Source/WebCore/workers/service/server/SWServer.cpp >@@ -773,10 +773,14 @@ void SWServer::unregisterServiceWorkerClient(const ClientOrigin& clientOrigin, S > if (clientIdentifiers.isEmpty()) { > ASSERT(!iterator->value.terminateServiceWorkersTimer); > iterator->value.terminateServiceWorkersTimer = std::make_unique<Timer>([clientOrigin, this] { >+ Vector<SWServerWorker*> workersToTerminate; > for (auto& worker : m_runningOrTerminatingWorkers.values()) { > if (worker->isRunning() && worker->origin() == clientOrigin) >- terminateWorker(worker); >+ workersToTerminate.append(worker.ptr()); > } >+ for (auto* worker : workersToTerminate) >+ terminateWorker(*worker); >+ > if (!m_clientsBySecurityOrigin.contains(clientOrigin.clientOrigin)) { > if (auto* connection = SWServerToContextConnection::connectionForOrigin(clientOrigin.clientOrigin)) > connection->connectionMayNoLongerBeNeeded();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186674
:
342818
|
343015
|
343060
|
343064