Bug 129764

Summary: [Gtk] Assertion failure in DumpRenderTree when MEDIA_STREAM is enabled
Product: WebKit Reporter: Brendan Long <b.long>
Component: WebKitGTKAssignee: Brendan Long <b.long>
Status: RESOLVED INVALID    
Severity: Normal CC: dbates, mrobinson
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch none

Description Brendan Long 2014-03-05 16:25:13 PST
Assertion failure in DumpRenderTree when MEDIA_STREAM is enabled
Comment 1 Brendan Long 2014-03-05 16:28:46 PST
Created attachment 225925 [details]
Patch
Comment 2 Brendan Long 2014-03-05 16:29:44 PST
Without this crash, DumpRenderTree does this ever time I run it:

#0  0x00007ffff78374c3 in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:333
#1  0x00007ffff27a92d3 in WebCore::Supplementable<WebCore::Page>::provideSupplement (this=0x819800, 
    key=0x7ffff51e7937 "UserMediaController", supplement=...)
    at ../../Source/WebCore/platform/Supplementable.h:104
#2  0x00007ffff27a8f8b in WebCore::Supplement<WebCore::Page>::provideTo (host=0x819800, 
    key=0x7ffff51e7937 "UserMediaController", supplement=...)
    at ../../Source/WebCore/platform/Supplementable.h:89
#3  0x00007ffff375ccf4 in WebCore::provideUserMediaTo (page=0x819800, client=0xddc420)
    at ../../Source/WebCore/Modules/mediastream/UserMediaController.cpp:54
#4  0x0000000000522f47 in WebCore::Internals::Internals (this=0xddbe10, document=0xd937a0)
    at ../../Source/WebCore/testing/Internals.cpp:311
#5  0x0000000000522b39 in WebCore::Internals::create (document=0xd937a0)
    at ../../Source/WebCore/testing/Internals.cpp:257
#6  0x00000000004e21f8 in WebCoreTestSupport::injectInternalsObject (context=0x7fffe803f9b0)
    at ../../Source/WebCore/testing/js/WebCoreTestSupport.cpp:49
#7  0x00000000004d6b15 in webViewWindowObjectCleared (view=0x81a3a0, frame=0x761fa0, 
    context=0x7fffe803f9b0, windowObject=0x7fffe803f970, data=0x0)
    at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:926
#8  0x00007ffff2313ac7 in webkit_marshal_VOID__OBJECT_POINTER_POINTER (closure=0x8a6340, 
    return_value=0x0, n_param_values=4, param_values=0x7fffffffafb0, invocation_hint=0x7fffffffaf50, 
    marshal_data=0x0) at DerivedSources/webkit/webkitmarshal.cpp:1163
#9  0x0000003b3ca10298 in g_closure_invoke (closure=0x8a6340, return_value=return_value@entry=0x0, 
    n_param_values=4, param_values=param_values@entry=0x7fffffffafb0, 
    invocation_hint=invocation_hint@entry=0x7fffffffaf50) at gclosure.c:777
#10 0x0000003b3ca2235d in signal_emit_unlocked_R (node=node@entry=0x607030, detail=detail@entry=0, 
    instance=instance@entry=0x81a3a0, emission_return=emission_return@entry=0x0, 
    instance_and_params=instance_and_params@entry=0x7fffffffafb0) at gsignal.c:3586
#11 0x0000003b3ca2a0f2 in g_signal_emit_valist (instance=instance@entry=0x81a3a0, 
    signal_id=signal_id@entry=172, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffb1e8)
    at gsignal.c:3330
#12 0x0000003b3ca2a8f8 in g_signal_emit_by_name (instance=0x81a3a0, 
    detailed_signal=0x7ffff3ca4f50 "window-object-cleared") at gsignal.c:3426
#13 0x00007ffff22c78d5 in WebKit::FrameLoaderClient::dispatchDidClearWindowObjectInWorld (
    this=0x788d20, world=...) at ../../Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:610
#14 0x00007ffff2ca57e9 in WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld (this=0x7f6c98, 
    world=...) at ../../Source/WebCore/loader/FrameLoader.cpp:3295
#15 0x00007ffff259a4a2 in WebCore::ScriptController::initScript (this=0x7f6f50, world=...)
    at ../../Source/WebCore/bindings/js/ScriptController.cpp:230
#16 0x00007ffff22cc089 in WebCore::ScriptController::windowShell (this=0x7f6f50, world=...)
    at ../../Source/WebCore/bindings/js/ScriptController.h:86
#17 0x00007ffff2599e48 in WebCore::ScriptController::evaluateInWorld (this=0x7f6f50, sourceCode=..., 
    world=...) at ../../Source/WebCore/bindings/js/ScriptController.cpp:136
#18 0x00007ffff259a01c in WebCore::ScriptController::evaluate (this=0x7f6f50, sourceCode=...)
    at ../../Source/WebCore/bindings/js/ScriptController.cpp:163
#19 0x00007ffff2880659 in WebCore::ScriptElement::executeScript (this=0x64de08, sourceCode=...)
    at ../../Source/WebCore/dom/ScriptElement.cpp:307
#20 0x00007ffff2ab7ba0 in WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent (
    this=0x871400, pendingScript=...) at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:144
#21 0x00007ffff2ab79ee in WebCore::HTMLScriptRunner::executeParsingBlockingScript (this=0x871400)
    at ../../Source/WebCore/html/parser/HTMLScriptRunner.cpp:120
#22 0x00007ffff2ab7ecc in WebCore::HTMLScriptRunner::executeParsingBlockingScripts (this=0x871400)
Comment 3 Martin Robinson 2014-03-05 20:56:07 PST
Comment on attachment 225925 [details]
Patch

What do other ports do?
Comment 4 Brendan Long 2014-03-05 21:07:39 PST
The only other port that calls WebCore::provideUserMediaTo() is Mac (WebView.mm, line 937), and I'm not sure why the assertion doesn't fail there.
Comment 5 Brendan Long 2014-03-12 13:19:50 PDT
I don't know what changed, but this isn't crashing anymore.