[Webkit-unassigned] [Bug 196383] New: Worklist::setNumberOfThreads seems incompatible with how we lock elsewhere
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Mar 28 17:32:59 PDT 2019
https://bugs.webkit.org/show_bug.cgi?id=196383
Bug ID: 196383
Summary: Worklist::setNumberOfThreads seems incompatible with
how we lock elsewhere
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: JavaScriptCore
Assignee: webkit-unassigned at lists.webkit.org
Reporter: sbarati at apple.com
E.g, there is no way this is right anymore:
```
void Worklist::visitWeakReferences(SlotVisitor& visitor)
{
VM* vm = visitor.heap()->vm();
{
LockHolder locker(*m_lock);
for (PlanMap::iterator iter = m_plans.begin(); iter != m_plans.end(); ++iter) {
Plan* plan = iter->value.get();
if (plan->vm() != vm)
continue;
plan->checkLivenessAndVisitChildren(visitor);
}
}
// This loop doesn't need locking because:
// (1) no new threads can be added to m_threads. Hence, it is immutable and needs no locks.
// (2) ThreadData::m_safepoint is protected by that thread's m_rightToRun which we must be
// holding here because of a prior call to suspendAllThreads().
for (unsigned i = m_threads.size(); i--;) {
ThreadData* data = m_threads[i].get();
Safepoint* safepoint = data->m_safepoint;
if (safepoint && safepoint->vm() == vm)
safepoint->checkLivenessAndVisitChildren(visitor);
}
}
```
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20190329/ba13f2a5/attachment.html>
More information about the webkit-unassigned
mailing list