| Summary: | ASSERT(!m_markedSpace.m_currentDelayedReleaseScope) reloading page in inspector | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Joseph Pecoraro <joepeck> | ||||
| Component: | JavaScriptCore | Assignee: | Mark Lam <mark.lam> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | CC: | fpizlo, ggaren, mark.lam, mhahnenberg, msaboff, oliver | ||||
| Priority: | P2 | ||||||
| Version: | 528+ (Nightly build) | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Attachments: |
|
||||||
|
Description
Joseph Pecoraro
2014-01-24 13:38:53 PST
Created attachment 222160 [details]
the patch.
The assertion failure is because we had entered a HeapIterationScope while the JSGlobalObject is destructing, which in turn means that a GC is progress. It's not legal to iterate the heap while a GC is in progress. To fix this: 1. We should not enter a HeapIterationScope when we iterate the CodeBlocks. Apparently, iterating the CodeBlocks does not count as heap iteration. 2. If we're detaching the debugger due to the JSGlobalObject destructing, then we don't need to clear the debugger requests in the associated CodeBlocks. The JSGlobalObject destructing would mean that those CodeBlocks would be destructing too, and it may not be safe to access them anyway at this point. Comment on attachment 222160 [details] the patch. View in context: https://bugs.webkit.org/attachment.cgi?id=222160&action=review r=me > Source/JavaScriptCore/ChangeLog:19 > + while the JSGlobalObject is destructing, which in turn means that a GC > + is progress. It's not legal to iterate the heap while a GC is in Not true. We were in the middle of sweeping, not collecting. Thanks. The comment has been fixed. Landed in r162735: <http://trac.webkit.org/r162735>. |