Bug 86910

Summary: ASSERT in JSEventListener::jsFunction() from audioContext.oncompletion
Product: WebKit Reporter: Jer Noble <jer.noble>
Component: WebCore JavaScriptAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: abarth, ap, ggaren, jer.noble, pnormand
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   

Description Jer Noble 2012-05-18 15:40:13 PDT
ASSERTION FAILED: m_wrapper || !m_jsFunction
/Volumes/Users/jer/Projects/WebKit.git/OpenSource/Source/WebCore/bindings/js/JSEventListener.h(90) : JSC::JSObject *WebCore::JSEventListener::jsFunction(WebCore::ScriptExecutionContext *) const
1   0x101f4f5b6 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*)
2   0x1019ee007 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&)
3   0x1019ede6b WebCore::EventTarget::fireEventListeners(WebCore::Event*)
4   0x1019edcf7 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
5   0x101501790 WebCore::AudioContext::fireCompletionEvent()
6   0x10243f51d WebCore::OfflineAudioDestinationNode::notifyComplete()
7   0x10243f4e9 WebCore::OfflineAudioDestinationNode::notifyCompleteDispatch(void*)
8   0x1005ac864 WTF::dispatchFunctionsFromMainThread()
9   0x7fff8cd4dea8 __NSThreadPerformPerform
10  0x7fff95792e91 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
11  0x7fff957927b5 __CFRunLoopDoSources0
12  0x7fff957b5a05 __CFRunLoopRun
13  0x7fff957b52f2 CFRunLoopRunSpecific
14  0x7fff8cd0c84e -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
15  0x100019259 runTest(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
16  0x10001752d dumpRenderTree(int, char const**)
17  0x100019a99 main
18  0x7fff91f997e1 start
Comment 1 Jer Noble 2012-05-18 15:40:53 PDT
Assertion occurs when running DumpRenderTree against the following:

webaudio/delaynode-scheduling.html
webaudio/delaynode.html
webaudio/audiobuffersource-multi-channels.html
webaudio/delaynode-maxdelay.html
Comment 2 Alexey Proskuryakov 2012-05-21 11:55:40 PDT
Sounds like the listener's wrapper is not protected from garbage collection.
Comment 3 Geoffrey Garen 2012-05-21 12:20:26 PDT
Is this a regression?
Comment 4 Jer Noble 2012-05-21 12:22:27 PDT
(In reply to comment #3)
> Is this a regression?

Probably not.  It's only being discovered as I add support for dumping audio data out of the Mac version of DRT.
Comment 5 Philippe Normand 2012-06-19 22:24:25 PDT
*** Bug 80298 has been marked as a duplicate of this bug. ***
Comment 6 Philippe Normand 2012-06-19 22:28:44 PDT
Bug 80681 seems to be another dupe but has a tentative patch and some interesting comments from Geoffrey.
Comment 7 Alexey Proskuryakov 2012-09-13 09:48:56 PDT
Philippe, Jer, would it be possible for you to look into this soon? We have a number of tests crashing on this assertion for unrelated reasons, and it would be very helpful to eliminate known and well understood cases.
Comment 8 Adam Barth 2012-11-16 11:56:04 PST
There's an AudioContext patch up for review that might fix this.  Let me find it.
Comment 9 Adam Barth 2012-11-16 11:56:21 PST
https://bugs.webkit.org/show_bug.cgi?id=102356
Comment 10 Philippe Normand 2012-12-29 08:21:01 PST

*** This bug has been marked as a duplicate of bug 102356 ***