Bug 38653
Summary: | [gtk] critical warning in soup_message_set_first_party() when cancelling a navigation | ||
---|---|---|---|
Product: | WebKit | Reporter: | Jonathon Jongsma (jonner) <jonathon> |
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | xan.lopez |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | PC | ||
OS: | OS X 10.5 |
Jonathon Jongsma (jonner)
Steps to reproduce:
- connect to "WebKitWebView:navigation-policy-decision-requested"
- in callback, call webkit_web_policy_decision_ignore(policy_decision) and return TRUE
notice critical warning on terminal:
(test-auth:7640): libsoup-CRITICAL **: soup_message_set_first_party: assertion `SOUP_IS_MESSAGE (msg)' failed
restartedCallback (msg=0xc3ac6(test-auth:7640): libsoup-CRITICAL **: soup_message_set_first_party: assertion `SOUP_IS_MESSAGE (msg)' failed
backtrace follows:
#0 restartedCallback (msg=0xc3ac60, data=<value optimized out>) at ../WebCore/platform/network/soup/ResourceHandleSoup.cpp:203
handle = <value optimized out>
request = {<WebCore::ResourceRequestBase> = {<WTF::FastAllocBase> = {<No data fields>}, m_url = {m_string = {
m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe7932e80}}, m_isValid = true, m_protocolInHTTPFamily = true, m_schemeEnd = 4,
m_userStart = 7, m_userEnd = 7, m_passwordEnd = 7, m_hostEnd = 23, m_portEnd = 23, m_pathAfterLastSlash = 32, m_pathEnd = 50, m_queryEnd = 94,
m_fragmentEnd = 94}, m_cachePolicy = WebCore::ReloadIgnoringCacheData, m_timeoutInterval = 2147483647, m_firstPartyForCookies = {m_string = {
m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe7932f40}}, m_isValid = true, m_protocolInHTTPFamily = true, m_schemeEnd = 4,
m_userStart = 7, m_userEnd = 7, m_passwordEnd = 7, m_hostEnd = 23, m_portEnd = 23, m_pathAfterLastSlash = 32, m_pathEnd = 50, m_queryEnd = 94,
m_fragmentEnd = 94}, m_httpMethod = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe7932e60}},
m_httpHeaderFields = {<WTF::HashMap<WebCore::AtomicString, WebCore::String, WebCore::CaseFoldingHash, WTF::HashTraits<WebCore::AtomicString>, WTF::HashTraits<WebCore::String> >> = {<WTF::FastAllocBase> = {<No data fields>}, m_impl = {static m_minTableSize = 64, static m_maxLoad = 2, static m_minLoad = 6,
m_table = 0x7fffd7caf400, m_tableSize = 64, m_tableSizeMask = 63, m_keyCount = 5, m_deletedCount = 0}}, <No data fields>},
m_responseContentDispositionEncodingFallbackArray = {<WTF::FastAllocBase> = {<No data fields>}, m_size = 3,
m_buffer = {<WTF::VectorBufferBase<WebCore::String>> = {<WTFNoncopyable::Noncopyable> = {<WTF::FastAllocBase> = {<No data fields>}, <No data fields>},
m_buffer = 0x7fffe787c980, m_capacity = 16}, <No data fields>}}, m_httpBody = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe79b1480},
m_allowCookies = true, m_resourceRequestUpdated = true, m_platformRequestUpdated = false, m_reportUploadProgress = false,
m_targetType = WebCore::ResourceRequestBase::TargetIsSubresource}, m_soupFlags = 0}
d = 0x7fffe7a15800
uri = <value optimized out>
location = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe790e9a0}}
newURL = {m_string = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe790e9a0}}, m_isValid = true, m_protocolInHTTPFamily = true,
m_schemeEnd = 4, m_userStart = 7, m_userEnd = 7, m_passwordEnd = 7, m_hostEnd = 23, m_portEnd = 23, m_pathAfterLastSlash = 32, m_pathEnd = 50,
m_queryEnd = 94, m_fragmentEnd = 94}
response = {<WebCore::ResourceResponseBase> = {<WTF::FastAllocBase> = {<No data fields>}, m_url = {m_string = {
m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe7948460}}, m_isValid = true, m_protocolInHTTPFamily = true, m_schemeEnd = 4,
m_userStart = 7, m_userEnd = 7, m_passwordEnd = 7, m_hostEnd = 23, m_portEnd = 23, m_pathAfterLastSlash = 32, m_pathEnd = 50, m_queryEnd = 94,
m_fragmentEnd = 94}, m_mimeType = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe74e01f8}}, m_expectedContentLength = 0,
m_textEncodingName = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffd7c38810}}, m_suggestedFilename = {
m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x0}}, m_httpStatusCode = 302, m_httpStatusText = {
m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffd7c38870}},
m_httpHeaderFields = {<WTF::HashMap<WebCore::AtomicString, WebCore::String, WebCore::CaseFoldingHash, WTF::HashTraits<WebCore::AtomicString>, WTF::HashTraits<WebCore::String> >> = {<WTF::FastAllocBase> = {<No data fields>}, m_impl = {static m_minTableSize = 64, static m_maxLoad = 2, static m_minLoad = 6,
m_table = 0x7fffd7caf800, m_tableSize = 64, m_tableSizeMask = 63, m_keyCount = 8, m_deletedCount = 0}}, <No data fields>}, m_lastModifiedDate = 0,
m_isNull = false, m_haveParsedCacheControlHeader = false, m_haveParsedAgeHeader = false, m_haveParsedDateHeader = false, m_haveParsedExpiresHeader = false,
m_haveParsedLastModifiedHeader = false, m_cacheControlContainsNoCache = false, m_cacheControlContainsNoStore = false,
m_cacheControlContainsMustRevalidate = false, m_cacheControlMaxAge = 0, m_age = 0, m_date = 0, m_expires = 0, m_lastModified = 0}, m_soupFlags = 0}
firstPartyString = {m_impl = {<WTF::FastAllocBase> = {<No data fields>}, m_ptr = 0x7fffe7932f40}}
#1 0x00007ffff401747e in IA__g_closure_invoke (closure=0xb1d730, return_value=0x0, n_param_values=1, param_values=0x6e7b60, invocation_hint=0x7fffffffd4e0)
at /tmp/buildd/glib2.0-2.24.1/gobject/gclosure.c:767
marshal = 0
marshal_data = 0x1
__PRETTY_FUNCTION__ = "IA__g_closure_invoke"
#2 0x00007ffff402d3f7 in signal_emit_unlocked_R (node=0x6f6ac0, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>,
instance_and_params=<value optimized out>) at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:3248
tmp = <value optimized out>
handler = 0x6e88c0
accumulator = 0x0
emission = {next = 0x7fffffffd8e0, instance = 0xc3ac60, ihint = {signal_id = 248, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN,
chain_type = 4}
class_closure = 0x6f6a70
handler_list = 0x6e88c0
return_accu = <value optimized out>
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 248
max_sequential_handler_number = <value optimized out>
return_value_altered = 1
#3 0x00007ffff402ea76 in IA__g_signal_emit_valist (instance=0xc3ac60, signal_id=<value optimized out>, detail=0, var_args=0x7fffffffd6d0)
at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:2981
signal_return_type = 4
param_values = <value optimized out>
node = 0x6f6ac0
i = <value optimized out>
n_params = <value optimized out>
__PRETTY_FUNCTION__ = "IA__g_signal_emit_valist"
#4 0x00007ffff402efc3 in IA__g_signal_emit (instance=0x2, signal_id=0, detail=4084310656) at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:3038
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd7b0, reg_save_area = 0x7fffffffd6f0}}
#5 0x00007ffff5c591f8 in soup_message_io_finished (msg=0xc3ac60) at soup-message-io.c:175
No locals.
#6 0x00007ffff401747e in IA__g_closure_invoke (closure=0xb23690, return_value=0x0, n_param_values=1, param_values=0x6d4d20, invocation_hint=0x7fffffffd8f0)
at /tmp/buildd/glib2.0-2.24.1/gobject/gclosure.c:767
marshal = 0
marshal_data = 0x1
__PRETTY_FUNCTION__ = "IA__g_closure_invoke"
#7 0x00007ffff402d3f7 in signal_emit_unlocked_R (node=0xaf7400, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>,
instance_and_params=<value optimized out>) at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:3248
tmp = <value optimized out>
handler = 0xc31670
accumulator = 0x0
emission = {next = 0x0, instance = 0xaf8180, ihint = {signal_id = 253, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
class_closure = 0xaf7200
handler_list = 0xc31670
return_accu = <value optimized out>
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 253
max_sequential_handler_number = <value optimized out>
return_value_altered = 0
#8 0x00007ffff402ea76 in IA__g_signal_emit_valist (instance=0xaf8180, signal_id=<value optimized out>, detail=0, var_args=0x7fffffffdae0)
at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:2981
signal_return_type = 4
param_values = <value optimized out>
node = 0xaf7400
i = <value optimized out>
n_params = <value optimized out>
__PRETTY_FUNCTION__ = "IA__g_signal_emit_valist"
#9 0x00007ffff402efc3 in IA__g_signal_emit (instance=0x2, signal_id=0, detail=4084310656) at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:3038
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffdbc0, reg_save_area = 0x7fffffffdb00}}
#10 0x00007ffff5c655b1 in socket_read_watch (chan=<value optimized out>, cond=0, user_data=<value optimized out>) at soup-socket.c:1245
sock = 0xaf8180
#11 0x00007ffff375d6c2 in g_main_dispatch (context=0x63eb50) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:1960
dispatch = 0x7ffff379f6d0 <g_io_unix_dispatch>
user_data = 0xaf8180
callback = 0x7ffff5c65550 <socket_read_watch>
cb_funcs = 0x7ffff39f9f50
cb_data = 0xb0b750
current_source_link = {data = 0xb43de0, next = 0x0}
source = 0xb43de0
current = 0x685580
i = 0
#12 IA__g_main_context_dispatch (context=0x63eb50) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2513
No locals.
#13 0x00007ffff3761538 in g_main_context_iterate (context=0x63eb50, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>)
at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2591
max_priority = 2147483647
timeout = 500
some_ready = 1
nfds = 7
allocated_nfds = -210312448
fds = <value optimized out>
__PRETTY_FUNCTION__ = "g_main_context_iterate"
#14 0x00007ffff3761a45 in IA__g_main_loop_run (loop=0xaf6660) at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c:2799
self = 0x602f20
__PRETTY_FUNCTION__ = "IA__g_main_loop_run"
#15 0x00007ffff5fba647 in IA__gtk_main () at /tmp/buildd/gtk+2.0-2.20.1/gtk/gtkmain.c:1219
tmp_list = 0x0
functions = 0x0
init = 0x7fffffffddf0
loop = <value optimized out>
#16 0x0000000000401001 in main (argc=1, argv=0x7fffffffded8) at test-auth.c:54
proxy = 0x663160
url = 0x690e60 "http://facebook.com/login.php/?api%5Fkey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&next=http%3A%2F%2Fwww%2Efacebook%2Ecom%2Fconnect%2Flogin%5Fsuccess%2Ehtml&req%5Fperms=read%5Fstream%2Cpublish%5Fstream&v=1%2E0"
win = 0x63b3b0
webview = 0x69e000
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Xan Lopez
I think to fully reproduce you must be using a webpage that does a redirect, since the warning occurs in the redirect callback inside webkit. In any case the problem is that we are not checking if the request was cancelled after checking with the client about the new status, I'll do a patch.
Xan Lopez
Should be fixed in r59157, thanks.