Bug 199786

Summary: Concurrent GC should not rely on current phase to determine if it's safe to steal conn
Product: WebKit Reporter: Tadeu Zagallo <tzagallo>
Component: JavaScriptCoreAssignee: Tadeu Zagallo <tzagallo>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, ews-watchlist, fpizlo, keith_miller, mark.lam, msaboff, rmorisset, saam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch none

Tadeu Zagallo
Reported 2019-07-14 14:25:11 PDT
Attachments
Patch (3.93 KB, patch)
2019-07-14 14:29 PDT, Tadeu Zagallo
no flags
Patch (4.18 KB, patch)
2019-07-15 00:24 PDT, Tadeu Zagallo
no flags
Tadeu Zagallo
Comment 1 2019-07-14 14:29:15 PDT
Saam Barati
Comment 2 2019-07-14 23:39:04 PDT
Comment on attachment 374094 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=374094&action=review > Source/JavaScriptCore/heap/Heap.cpp:2124 > + if ((m_lastServedTicket == m_lastGrantedTicket) && !m_collectorThreadIsRunning) { don’t you still need to check m_currentPhase? Can’t that also be driven by the mutator and we me in the middle of a collection?
Saam Barati
Comment 3 2019-07-14 23:42:03 PDT
Comment on attachment 374094 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=374094&action=review setting back to r? based on my questions > Source/JavaScriptCore/heap/Heap.cpp:261 > + m_heap.m_collectorThreadIsRunning = false; Is this the correct place to set this to false? Why are we guaranteed to run poll() again?
Tadeu Zagallo
Comment 4 2019-07-15 00:18:08 PDT
Comment on attachment 374094 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=374094&action=review >> Source/JavaScriptCore/heap/Heap.cpp:261 >> + m_heap.m_collectorThreadIsRunning = false; > > Is this the correct place to set this to false? Why are we guaranteed to run poll() again? Yes, unless the thread stops. I missed that. I'll update the patch to implement threadIsStopping and set it to false there. >> Source/JavaScriptCore/heap/Heap.cpp:2124 >> + if ((m_lastServedTicket == m_lastGrantedTicket) && !m_collectorThreadIsRunning) { > > don’t you still need to check m_currentPhase? Can’t that also be driven by the mutator and we me in the middle of a collection? This is called from the mutator thread, right? I think it's correct, but hypothetically, even if the mutator was collecting, all this would do is set the conn bit, which should already be set when the mutator is collecting.
Tadeu Zagallo
Comment 5 2019-07-15 00:24:25 PDT
WebKit Commit Bot
Comment 6 2019-07-15 01:47:28 PDT
Comment on attachment 374106 [details] Patch Clearing flags on attachment: 374106 Committed r247426: <https://trac.webkit.org/changeset/247426>
WebKit Commit Bot
Comment 7 2019-07-15 01:47:29 PDT
All reviewed patches have been landed. Closing bug.
Yusuke Suzuki
Comment 8 2019-07-15 17:13:24 PDT
Nice!!
Note You need to log in before you can comment on or make changes to this bug.