ASSERT(!pageGroupLoadDeferrer) fails in void WebView::willEnterModalLoop() when re-entering message loop (e.g. when evaluating properties that require message loop to be run (e.g. document.cookie) in Web Inspector, on a breakpoint.)
Created attachment 60633 [details] [PATCH] Suggested solution Enable re-entrancy of the message loop by tracking the nesting level.
Comment on attachment 60633 [details] [PATCH] Suggested solution WebKit/chromium/src/WebViewImpl.cpp:141 + static PageGroupLoadDeferrer* pageGroupLoadDeferrer = 0; You don't need explicit initialization here. WebKit/chromium/ChangeLog:5 + [Chromium] Crash when re-entering message loop Please provide more detailed comment including the description of the drawbacks of this solution. WebKit/chromium/src/WebViewImpl.cpp:191 + ASSERT(pageGroupLoadDeferrer); You may want to check in debug mode that PageGroup hasn't changed since previous call to this method WebKit/chromium/src/js/Tests.js:1862 + WebInspector.console.visible = true; Use WebInspector.showConsole instead. WebKit/chromium/src/js/Tests.js:1896 + function(callFrames) { Please use evaluateInConsole_ instead of this custom code. WebKit/chromium/src/js/Tests.js:1872 + function(commandResult) { Use evaluateInConsole_ instead.
Created attachment 60736 [details] [PATCH] Comments addressed
Darin, can you please have a look at this change? You seem to know those ropes...
I think it would be better to create a stack of PageGroupLoadDeferrer objects. It is safe to nest instances of those, and that's what we should actually do if we need to support multiple levels of nesting.
Created attachment 60752 [details] [PATCH] Implemented a stack of PageGroupLoadDeferrers, as suggested by fishd
Committing to http://svn.webkit.org/repository/webkit/trunk ... M WebCore/ChangeLog M WebCore/page/PageGroupLoadDeferrer.cpp M WebCore/page/PageGroupLoadDeferrer.h M WebKit/chromium/ChangeLog M WebKit/chromium/src/WebViewImpl.cpp M WebKit/chromium/src/js/Tests.js Committed r62774