Summary: | [GTK] ASSERTION FAILED: shouldLoadAsEmptyDocument(r.url()) || !defersLoading() in MainResourceLoader.cpp:382 | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Sudarsana Nagineni (babu) <naginenis> | ||||||
Component: | WebKitGTK | Assignee: | Dan Winship <danw> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | danw, gustavo, mrobinson, rakuco, svillar, webkit.review.bot, xan.lopez | ||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Sudarsana Nagineni (babu)
2012-04-29 08:05:49 PDT
Wow! I think what's happening here is that the load is continuing while the alert box is up. I'm pretty sure this shouldn't happen at all -- the box should block page loading. It would be useful to have the stack trace from DumpRenderTree as well. (In reply to comment #2) > It would be useful to have the stack trace from DumpRenderTree as well. Here is the stack trace from DRT. Patch in the bug #85134 is needed to reproduce the crash with DRT. Core was generated by `WebKitBuild/Debug/Programs/DumpRenderTree LayoutTests/loader/load-defer-resume-'. Program terminated with signal 11, Segmentation fault. #0 0x00007fa907a0f3bb in WebCore::MainResourceLoader::didReceiveResponse (this=0x2335ef0, r=...) at ../../Source/WebCore/loader/MainResourceLoader.cpp:382 382 ASSERT(shouldLoadAsEmptyDocument(r.url()) || !defersLoading()); (gdb) bt #0 0x00007fa907a0f3bb in WebCore::MainResourceLoader::didReceiveResponse (this=0x2335ef0, r=...) at ../../Source/WebCore/loader/MainResourceLoader.cpp:382 #1 0x00007fa907a1c5d7 in WebCore::ResourceLoader::didReceiveResponse (this=0x2335ef0, response=...) at ../../Source/WebCore/loader/ResourceLoader.cpp:423 #2 0x00007fa907bbf6f5 in WebCore::sendRequestCallback (source=0x7fa8b4015120, res=0x22f5ee0, data=0x23729d0) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:376 #3 0x00007fa9054c4743 in g_simple_async_result_complete (simple=0x22f5ee0) at gsimpleasyncresult.c:767 #4 0x00007fa9054c4b08 in complete_in_idle_cb_for_thread (_data=<optimized out>) at gsimpleasyncresult.c:835 #5 0x00007fa9053829ca in g_main_dispatch (context=<optimized out>) at gmain.c:2515 #6 g_main_context_dispatch (context=0x1c2b450) at gmain.c:3052 #7 0x00007fa905385168 in g_main_context_iterate (context=0x1c2b450, block=1, dispatch=<optimized out>, self=<optimized out>) at gmain.c:3123 #8 0x00007fa9053853f5 in g_main_loop_run (loop=0x1c6bfa0) at gmain.c:3317 #9 0x00007fa905b47a5d in gtk_main () at gtkmain.c:1161 #10 0x000000000045940d in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:696 #11 0x000000000045bb26 in main (argc=2, argv=0x7fffb11da7c8) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1382 (gdb) It seems that the fact that the assertion happened during the alert box is a red herring. While that behavior is clearly wrong, this assertion failure seems to be caused by something else. Looks like Soup is calling WebCore::ResourceLoader::didReceiveResponse on a resource that is deferring it's loading. hm... the call to soup_session_pause_message() in sendRequestCallback() is wrong... It ought to be just "return;", but then there also needs to be logic in platformSetDefersLoading() to handle the case of undeferring at that point (since it will need to call didReceiveResponse() then). (In reply to comment #6) > hm... the call to soup_session_pause_message() in sendRequestCallback() is wrong... It ought to be just "return;", but then there also needs to be logic in platformSetDefersLoading() to handle the case of undeferring at that point (since it will need to call didReceiveResponse() then). The pause_message() issue is tracked in bug 84955 *** Bug 84955 has been marked as a duplicate of this bug. *** Created attachment 140024 [details]
patch
Not sure if this actually works, because I'm getting tons of test failures with or without this patch...
(In reply to comment #9) > Not sure if this actually works, because I'm getting tons of test failures with or without this patch... That turned out to be libsoup's fault, and that's fixed in git now. The patch works. Comment on attachment 140024 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=140024&action=review > Source/WebCore/ChangeLog:4 > + Remove a soup_session_pause_message() call that got left behind, > + update the defersLoading stuff to handle this case. Minor nit: The line here should be the title of the bug. Created attachment 140209 [details]
patch with updated ChangeLog
Comment on attachment 140209 [details] patch with updated ChangeLog Clearing flags on attachment: 140209 Committed r116117: <http://trac.webkit.org/changeset/116117> All reviewed patches have been landed. Closing bug. |