WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
56315
SPOD with stalled media element
https://bugs.webkit.org/show_bug.cgi?id=56315
Summary
SPOD with stalled media element
Joseph Pecoraro
Reported
2011-03-14 10:37:33 PDT
Created
attachment 85691
[details]
[TEST] Manual Test - Not a complete hang, but should SPOD Stalling a media element after the meta data causes hang like symptoms (spinner of death) while the media element progress event timer frequently fires. Attaching a test case that reproduced this for me. * SAMPLE: 8442 Thread_204115 DispatchQueue_1: com.apple.main-thread (serial) 8442 0x100009f84 8442 NSApplicationMain 8442 -[NSApplication run] 8442 0x100016062 8442 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] 8442 _DPSNextEvent 8442 BlockUntilNextEventMatchingListInMode 8442 ReceiveNextEventCommon 8442 RunCurrentEventLoopInMode 8442 CFRunLoopRunSpecific 8442 __CFRunLoopRun 7262 WebCore::timerFired(__CFRunLoopTimer*, void*) 7258 WebCore::ThreadTimers::sharedTimerFiredInternal() 7257 WebCore::HTMLMediaElement::progressEventTimerFired(WebCore::Timer<WebCore::HTMLMediaElement>*) 7257 WebCore::MediaPlayerPrivateQTKit::bytesLoaded() const 6484 WebCore::MediaPlayerPrivateQTKit::duration() const 6484 -[QTMovie duration] 6484 -[QTMovie_QuickTime duration] 6484 timeFromServerWithSelector 6484 getQTTime 6484 mach_msg 6484 mach_msg_trap 771 WebCore::MediaPlayerPrivateQTKit::totalBytes() const 771 -[QTMovie attributeForKey:] 771 QTMovieAttributesGetAttribute 771 -[QTMovie_QuickTime dataSize] 771 dataSize 771 mach_msg 771 mach_msg_trap * STEPS TO REPRODUCE: 1. cd webkit root 2. Place in ./LayoutTests/http/tests/media/video-play-stall-after-meta-data.html 3. Run ./Tools/Scripts/run-webkit-httpd 4. Open 127.0.0.1:8000/media/video-play-stall-after-meta-data.html in Safari. * NOTES: • I don't know if we can write a reliable test case for this that DumpRenderTree will catch. • The window.onload event doesn't fire, I am working on a separate bug to fix that.
Attachments
[TEST] Manual Test - Not a complete hang, but should SPOD
(868 bytes, text/html)
2011-03-14 10:37 PDT
,
Joseph Pecoraro
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Eric Carlson
Comment 1
2011-03-14 11:12:57 PDT
Every time QuickTime (in QTKitServer) is idled, it gives time to the video pipeline which tries to load the data for the first frame. This read is synchronous so it blocks the call we make to QTKit to get the duration. Call graph: 2167 Thread_1011186 DispatchQueue_1: com.apple.main-thread (serial) 2167 start 2167 main 2167 CFRunLoopRun 2167 CFRunLoopRunSpecific 2167 __CFRunLoopRun 2158 __NSFireTimer 2158 +[QTMovie_QuickTime idleAllMovies:] 2158 -[QTMovie_QuickTime idle] 2158 QTObjectTokenExecuteCommand 2158 QTSendToObject 2158 QTObjectTokenPriv::DispatchMessage(QTMessagePriv*, void const*, __CFAllocator const*, unsigned long, unsigned long, ComponentMsgParam*, unsigned long, unsigned long) 2158 QTObjectTokenPriv::SendMessageToObject(QTMessagePriv*, unsigned long) 2158 DispatchQTMsg(void const*, unsigned long, unsigned long, unsigned long, QTOGenericObject*) 2158 QTOMovieObject::SendCommand(unsigned long, void const*) 2158 MCIdle 2158 CallComponentDispatch 2158 _MCComponentDispatch 2158 CallComponentFunctionCommonWithStorage(char**, ComponentParameters*, long (*)(), unsigned long) 2158 _MCIdle 2158 internalDoAction 2158 doIdleMovie 2158 TaskMovie_priv 2158 MediaMoviesTask 2158 CallComponentDispatch 2158 Video2ComponentDispatch 2158 CallComponentFunctionCommonWithStorage(char**, ComponentParameters*, long (*)(), unsigned long) 2158 callComponentStorage_44444 2158 Video2MoviesTask 2158 v2m_doWhatTheMentorTellsUs 2158 QueueAFrame 2158 DataHFinishData 2158 CallComponentDispatch 2158 HTTPDataHandler_ComponentDispatch 2158 CallComponentFunctionCommonWithStorage(char**, ComponentParameters*, long (*)(), unsigned long) 2158 HTTPDataHandler_FinishData 2155 HTTPDhlr_ReadSYNC We should be caching the duration immediately and only reading it when we know the movie has been edited like we do in the new AVFoundation backend.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug