When a GCThread returns from copyFromShared(), it then calls doneCopying(), which returns its borrowed CopiedBlock to the CopiedSpace. This final block allows the CopiedSpace to continue and finish the cleanup of the copying phase. However, the GCThread can loop back around, see that m_currentPhase is still "Copy", and try to go through the copying phase again. This can cause all sorts of issues. To fix this, we should add a cyclic barrier to GCThread::waitForNextPhase().
Created attachment 169441 [details] Patch
Comment on attachment 169441 [details] Patch Clearing flags on attachment: 169441 Committed r131791: <http://trac.webkit.org/changeset/131791>
All reviewed patches have been landed. Closing bug.