Bug 190747

Summary: [WinCairo] ASSERTION FAILED: !m_preparingToPlay in MediaPlayerPrivateMediaFoundation::prepareToPlay
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: WebCore Misc.Assignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, don.olmstead, pvollan, ross.kirsling, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=156284
Attachments:
Description Flags
Patch none

Description Fujii Hironori 2018-10-19 00:50:38 PDT
[WinCairo] ASSERTION FAILED: !m_preparingToPlay in MediaPlayerPrivateMediaFoundation::prepareToPlay

WinCairo, WK1, Debug build, trunk@237282

1. Start MiniBrowser
2. Menu > New WebKitLegacy Window
3. Go to https://www.youtube.com/
4. ASSERTION FAILED: !m_preparingToPlay

Log:

> ASSERTION FAILED: !m_preparingToPlay
> c:\webkit\ga\source\webcore\platform\graphics\win\mediaplayerprivatemediafoundation.cpp(197) : WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay

Callstack:

> WTF.dll!WTFCrash() Line 255	C++
> WebKit.dll!WTFCrashWithInfo(int __formal, const char * __formal, const char * __formal, int __formal) Line 551	C++
> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay() Line 197	C++
> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet() Line 922	C++
> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent::__l11::<lambda>() Line 535	C++
> WebKit.dll!WTF::Function<void __cdecl(void)>::CallableWrapper<void <lambda>(void) >::call() Line 101	C++
> WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 57	C++
> WTF.dll!WTF::dispatchFunctionsFromMainThread() Line 118	C++
> WTF.dll!WTF::ThreadingWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 48	C++
> [External Code]	
> WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 96	C++
> MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 89	C++
> MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 106	C++
> MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 230	C++
> [External Code]	

No problem happens in WK2 Window.
Comment 1 Fujii Hironori 2018-10-19 04:13:34 PDT
Following test cases are crashing due to this bug.

fast/canvas/webgl/texImage2D-video-flipY-false.html
fast/canvas/webgl/texImage2D-video-flipY-true.html
Comment 2 Fujii Hironori 2019-05-27 20:24:01 PDT
m_preparingToPlay has been introduced in Bug 156284.
Comment 3 Fujii Hironori 2019-05-27 22:09:01 PDT
MediaPlayerPrivateMediaFoundation::prepareToPlay is called from HTMLMediaElement::prepareToPlay first.

> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay() Line 193	C++
> WebKit.dll!WebCore::MediaPlayer::prepareToPlay() Line 554	C++
> WebKit.dll!WebCore::HTMLMediaElement::prepareToPlay() Line 2958	C++
> WebKit.dll!WebCore::HTMLMediaElement::load::<unnamed-tag>::operator()() Line 1183	C++
> WebKit.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebCore\html/HTMLMediaElement.cpp:1181:46',void>::call() Line 52	C++
> WebKit.dll!WTF::Function<void ()>::operator()() Line 79	C++
> WebKit.dll!WebCore::GenericTaskQueue<WebCore::Timer,unsigned int>::enqueueTask::<unnamed-tag>::operator()() Line 107	C++
> WebKit.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebCore\platform\GenericTaskQueue.h:101:31',void>::call() Line 52	C++
> WebKit.dll!WTF::Function<void ()>::operator()() Line 79	C++
> WebKit.dll!WebCore::TaskDispatcher<WebCore::Timer>::dispatchOneTask() Line 111	C++
> WebKit.dll!WebCore::TaskDispatcher<WebCore::Timer>::sharedTimerFired() Line 86	C++
> WebKit.dll!WebCore::TaskDispatcher<WebCore::Timer>::sharedTimer::<unnamed-tag>::operator()() Line 60	C++
> WebKit.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebCore\platform/GenericTaskQueue.cpp:60:40',void>::call() Line 52	C++
> WebKit.dll!WTF::Function<void ()>::operator()() Line 79	C++
> WebKit.dll!WebCore::Timer::fired() Line 127	C++
> WebKit.dll!WebCore::ThreadTimers::sharedTimerFiredInternal() Line 129	C++
> WebKit.dll!WebCore::ThreadTimers::setSharedTimer::<unnamed-tag>::operator()() Line 69	C++
> WebKit.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebCore\platform/ThreadTimers.cpp:69:41',void>::call() Line 52	C++
> WebKit.dll!WTF::Function<void ()>::operator()() Line 79	C++
> WebKit.dll!WebCore::MainThreadSharedTimer::fired() Line 84	C++
> WebKit.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 89	C++
> [External Code]	
> WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 94	C++
> MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 97	C++
> MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 115	C++
> MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 232	C++
> [External Code]	

And, called from onTopologySet next, and the assertion fails.

> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay() Line 193	C++
> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet() Line 917	C++
> WebKit.dll!WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent::<unnamed-tag>::operator()() Line 531	C++
> WebKit.dll!WTF::Detail::CallableWrapper<`lambda at ..\..\Source\WebCore\platform\graphics\win\MediaPlayerPrivateMediaFoundation.cpp:527:26',void>::call() Line 52	C++
> WTF.dll!WTF::Function<void ()>::operator()() Line 79	C++
> WTF.dll!WTF::dispatchFunctionsFromMainThread() Line 113	C++
> WTF.dll!WTF::ThreadingWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 48	C++
> [External Code]	
> WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 94	C++
> MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 97	C++
> MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 115	C++
> MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 232	C++
> [External Code]
Comment 4 Fujii Hironori 2019-05-28 03:19:09 PDT
Created attachment 370720 [details]
Patch
Comment 5 Fujii Hironori 2019-05-28 21:38:30 PDT
Comment on attachment 370720 [details]
Patch

Clearing flags on attachment: 370720

Committed r245846: <https://trac.webkit.org/changeset/245846>
Comment 6 Fujii Hironori 2019-05-28 21:38:33 PDT
All reviewed patches have been landed.  Closing bug.
Comment 7 Radar WebKit Bug Importer 2019-05-28 21:39:16 PDT
<rdar://problem/51208080>