WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
298798
Make VM::setHasTerminationRequest() thread-safe.
https://bugs.webkit.org/show_bug.cgi?id=298798
Summary
Make VM::setHasTerminationRequest() thread-safe.
Mark Lam
Reported
2025-09-12 15:04:10 PDT
VM::setHasTerminationRequest() should be thread-safe but is not because it sets a bit on the VM::m_entryScopeServices OptionSet, which is not thread-safe. For the record, this is how the concurrent access works: 1. VM::m_entryScopeServices is normally set by the mutator thread running that VM. 2. However, the Worker.terminate() API can be used by the main thread to terminate worker threads. Worker.terminate() calls ... WorkerMessagingProxy::terminateWorkerGlobalScope(), which calls ... WorkerOrWorkletThread::stop(), which calls ... WorkerOrWorkletScriptController::scheduleExecutionTermination(), which calls ... VM::notifyNeedTermination(), which calls ... VM::setHasTerminationRequest(), which calls ... VM::requestEntryScopeService(), and ... VM::requestEntryScopeService() does bitwise OR of the EntryScopeService::ResetTerminationRequest bit into the worker thread's VM::m_entryScopeServices. This is not thread safe because it may collide with the worker thread writing values into its VM::m_entryScopeServices. We can fix this by moving the EntryScopeService::ResetTerminationRequest bit into a separate byte that is safe to write to concurrently. In practice, the bug never manifests because it is extremely rare for VM::m_entryScopeServices to ever be written to, and the impact is benign. Regardless, we should fix this.
Attachments
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2025-09-12 15:04:49 PDT
<
rdar://problem/160494627
>
Mark Lam
Comment 2
2025-09-12 16:11:06 PDT
Pull request:
https://github.com/WebKit/WebKit/pull/50684
EWS
Comment 3
2025-09-16 13:43:22 PDT
Committed
300049@main
(9ea05fa06f20): <
https://commits.webkit.org/300049@main
> Reviewed commits have been landed. Closing PR #50684 and removing active labels.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug