RESOLVED FIXED 218840
REGRESSION(r269701): inspector/console/webcore-logging.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=218840
Summary REGRESSION(r269701): inspector/console/webcore-logging.html is crashing
Blaze Burg
Reported 2020-11-11 19:56:40 PST
.
Attachments
Stack trace of ASSERT (121.12 KB, text/plain)
2020-11-11 19:57 PST, Blaze Burg
no flags
Speculative fix (3.12 KB, patch)
2020-11-11 20:31 PST, Blaze Burg
no flags
Patch v1.1 (3.90 KB, patch)
2020-11-12 11:38 PST, Blaze Burg
no flags
Radar WebKit Bug Importer
Comment 1 2020-11-11 19:56:53 PST
Blaze Burg
Comment 2 2020-11-11 19:57:11 PST
Created attachment 413903 [details] Stack trace of ASSERT
Blaze Burg
Comment 3 2020-11-11 20:19:29 PST
Patch forthcoming.
Blaze Burg
Comment 4 2020-11-11 20:22:56 PST
Analysis: Test.html finishes loading. Our load event listener calls InspectorFrontendHost::loaded() which makes the inspector focus, which makes the webpage window unfocus and resign first responder. This causes style recalc, and we have sync instrumentation underneath it (this should really be more async btw). The instrumentation generates an event to be dispatched to the frontend. The dispatcher hasn't been told that the window is loaded yet under InspectorFrontendHost::frontendLoaded. It's not safe to eval scripts due to the sync style recalc upthread, so the dispatcher suspends and tries again on another run loop turn.
Blaze Burg
Comment 5 2020-11-11 20:23:38 PST
(In reply to Brian Burg from comment #4) > Analysis: > > Test.html finishes loading. Our load event listener calls > InspectorFrontendHost::loaded() which makes the inspector focus, which > makes the webpage window unfocus and resign first responder. This causes > style recalc, and we have sync instrumentation underneath it (this should > really be more async btw). The instrumentation generates an event to be > dispatched to the frontend. The dispatcher hasn't been told that the window > is loaded yet under InspectorFrontendHost::frontendLoaded. It's not safe to > eval scripts due to the sync style recalc upthread, so the dispatcher > suspends and tries again on another run loop turn. And the crash is due to an ASSERT(m_frontendLoaded) failing.
Blaze Burg
Comment 6 2020-11-11 20:31:37 PST
Created attachment 413906 [details] Speculative fix
Devin Rousso
Comment 7 2020-11-11 22:34:25 PST
Comment on attachment 413906 [details] Speculative fix rs=me Should we also guard the `evaluateQueuedExpressions()` call inside `InspectorFrontendAPIDispatcher::unsuspend` behind an `if (m_frontendLoaded)`?
Blaze Burg
Comment 8 2020-11-12 11:38:08 PST
Created attachment 413957 [details] Patch v1.1 Newest patch adds a guard in suspend() per Devin's review comment.
Blaze Burg
Comment 9 2020-11-12 11:38:45 PST
(In reply to Brian Burg from comment #8) > Created attachment 413957 [details] > Patch v1.1 > > Newest patch adds a guard in suspend() per Devin's review comment. Typo: unsuspend(), not suspend()
EWS
Comment 10 2020-11-13 16:21:09 PST
Committed r269806: <https://trac.webkit.org/changeset/269806> All reviewed patches have been landed. Closing bug and clearing flags on attachment 413957 [details].
Note You need to log in before you can comment on or make changes to this bug.