Summary: | [WinCairo] ASSERTION FAILED: info.bmBitsPixel == 32 in createCairoContextWithHDC | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Fujii Hironori <Hironori.Fujii> | ||||||||||||||
Component: | Platform | Assignee: | Fujii Hironori <Hironori.Fujii> | ||||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||||
Severity: | Normal | CC: | achristensen, bfulgham, don.olmstead, ews-watchlist, pvollan, rniwa, 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=17737 https://bugs.webkit.org/show_bug.cgi?id=201493 |
||||||||||||||||
Attachments: |
|
Description
Fujii Hironori
2019-05-28 22:55:27 PDT
info.bmBitsPixel was 1.
> info.bmType 0x00000000 long
> info.bmWidth 0x00000001 long
> info.bmHeight 0x00000001 long
> info.bmWidthBytes 0x00000002 long
> info.bmPlanes 0x0001 unsigned short
> info.bmBitsPixel 0x0001 unsigned short
> info.bmBits 0x0000000000000000 void *
Created attachment 370834 [details]
request-animation-frame-prefix-crash-log.txt
SelectObject in WebView::paint failed, the return value (oldBitmap) was NULL. > HGDIOBJ oldBitmap = ::SelectObject(bitmapDC.get(), m_backingStoreBitmap->get()); WebView::paint is called recursively. The first call was from displayAndTrackRepaintsCallback. > WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1347 C++ > WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++ > [External Code] > DumpRenderTreeLib.dll!displayWebView() Line 391 C++ > DumpRenderTreeLib.dll!TestRunner::displayAndTrackRepaints() Line 251 C++ > DumpRenderTreeLib.dll!displayAndTrackRepaintsCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned __int64 argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 494 C++ > JavaScriptCore.dll!JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState * exec) Line 63 C++ > [External Code] And the second call was from notifyDoneCallback. > WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1347 C++ > WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++ > [External Code] > DumpRenderTreeLib.dll!dump() Line 692 C++ > DumpRenderTreeLib.dll!TestRunner::notifyDone() Line 311 C++ > DumpRenderTreeLib.dll!notifyDoneCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned __int64 argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 606 C++ > JavaScriptCore.dll!JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState * exec) Line 63 C++ > [External Code] Unfortunately Visual Studio debugger doesn't show the complete callstack under JSC. So, I mean these callstacks are consequtive. I combined them: > WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1347 C++ > WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++ > [External Code] > DumpRenderTreeLib.dll!dump() Line 692 C++ > DumpRenderTreeLib.dll!TestRunner::notifyDone() Line 311 C++ > DumpRenderTreeLib.dll!notifyDoneCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned __int64 argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 606 C++ > JavaScriptCore.dll!JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState * exec) Line 63 C++ > [External Code] > (...) > WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1347 C++ > WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++ > [External Code] > DumpRenderTreeLib.dll!displayWebView() Line 391 C++ > DumpRenderTreeLib.dll!TestRunner::displayAndTrackRepaints() Line 251 C++ > DumpRenderTreeLib.dll!displayAndTrackRepaintsCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned __int64 argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 494 C++ > JavaScriptCore.dll!JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState * exec) Line 63 C++ > [External Code] (In reply to Fujii Hironori from comment #0) > editing/execCommand/change-list-type.html > fast/animation/request-animation-frame-prefix.html Both tests call notifyDone in RequestAnimationFrame callback. RequestAnimationFrame callback is call back during WebView::paint.
> WebKit.dll!WTF::RefPtr<WebCore::RequestAnimationFrameCallback,WTF::DumbPtrTraits<WebCore::RequestAnimationFrameCallback> >::operator->() Line 79 C++
> WebKit.dll!WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks(double timestamp) Line 216 C++
> WebKit.dll!WebCore::Document::serviceRequestAnimationFrameCallbacks(double timestamp) Line 6224 C++
> WebKit.dll!WebCore::Page::updateRendering() Line 1299 C++
> WebKit.dll!WebView::updateBackingStore(WebCore::FrameView * frameView, HDC__ * dc, bool backingStoreCompletelyDirty, WebView::WindowsToPaint windowsToPaint) Line 1177 C++
> WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1353 C++
> WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++
> [External Code]
> DumpRenderTreeLib.dll!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & inputLine) Line 1255 C++
> DumpRenderTreeLib.dll!main(int argc, const char * * argv) Line 1612 C++
> DumpRenderTreeLib.dll!dllLauncherEntryPoint(int argc, const char * * argv) Line 1652 C++
> DumpRenderTree.exe!main(int argc, const char * * argv) Line 230 C++
> [External Code]
By using LLint CLoop, I get the full callstack.
> WTF.dll!WTFCrash() Line 305 C++
> WebKit.dll!WTFCrashWithInfo(int __formal, const char * __formal, const char * __formal, int __formal) Line 569 C++
> WebKit.dll!WebCore::createCairoContextWithHDC(HDC__ * hdc, bool hasAlpha) Line 54 C++
> WebKit.dll!WebCore::GraphicsContext::platformInit(HDC__ * dc, bool hasAlpha) Line 79 C++
> WebKit.dll!WebCore::GraphicsContext::GraphicsContext(HDC__ * dc, bool hasAlpha) Line 72 C++
> WebKit.dll!WebView::paintIntoBackingStore(WebCore::FrameView * frameView, HDC__ * bitmapDC, const WebCore::IntRect & dirtyRectPixels, WebView::WindowsToPaint windowsToPaint) Line 1425 C++
> WebKit.dll!WebView::updateBackingStore(WebCore::FrameView * frameView, HDC__ * dc, bool backingStoreCompletelyDirty, WebView::WindowsToPaint windowsToPaint) Line 1189 C++
> WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1353 C++
> WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++
> [External Code]
> DumpRenderTreeLib.dll!dump() Line 694 C++
> DumpRenderTreeLib.dll!TestRunner::notifyDone() Line 311 C++
> DumpRenderTreeLib.dll!notifyDoneCallback(const OpaqueJSContext * context, OpaqueJSValue * function, OpaqueJSValue * thisObject, unsigned __int64 argumentCount, const OpaqueJSValue * const * arguments, const OpaqueJSValue * * exception) Line 606 C++
> JavaScriptCore.dll!JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState * exec) Line 63 C++
> JavaScriptCore.dll!JSC::NativeFunction::operator()(JSC::ExecState * exec) Line 50 C++
> JavaScriptCore.dll!JSC::LLInt::CLoop::execute(JSC::OpcodeID entryOpcodeID, void * executableAddress, JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame, bool isInitializationPass) Line 20746 C++
> JavaScriptCore.dll!vmEntryToJavaScript(void * executableAddress, JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 150 C++
> JavaScriptCore.dll!JSC::JITCode::execute(JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 38 C++
> JavaScriptCore.dll!JSC::Interpreter::executeCall(JSC::ExecState * callFrame, JSC::JSObject * function, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args) Line 904 C++
> JavaScriptCore.dll!JSC::call(JSC::ExecState * exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args) Line 59 C++
> JavaScriptCore.dll!JSC::profiledCall(JSC::ExecState * exec, JSC::ProfilingReason reason, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args) Line 80 C++
> JavaScriptCore.dll!JSC::JSMicrotask::run(JSC::ExecState * exec) Line 90 C++
> WebKit.dll!WebCore::JSExecState::runTask(JSC::ExecState * exec, JSC::Microtask & task) Line 93 C++
> WebKit.dll!WebCore::JSMicrotaskCallback::call() Line 47 C++
> WebKit.dll!WebCore::JSDOMWindowBase::queueTaskToEventLoop::__l2::<lambda>() Line 215 C++
> WebKit.dll!WTF::Detail::CallableWrapper<void <lambda>(void),void>::call() Line 52 C++
> WebKit.dll!WTF::Function<void __cdecl(void)>::operator()() Line 80 C++
> WebKit.dll!WebCore::ActiveDOMCallbackMicrotask::run() Line 46 C++
> WebKit.dll!WebCore::MicrotaskQueue::performMicrotaskCheckpoint() Line 98 C++
> WebKit.dll!WebCore::JSExecState::didLeaveScriptContext(JSC::ExecState * exec) Line 43 C++
> WebKit.dll!WebCore::JSExecState::~JSExecState() Line 146 C++
> WebKit.dll!WebCore::JSExecState::profiledCall(JSC::ExecState * exec, JSC::ProfilingReason reason, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args, WTF::NakedPtr<JSC::Exception> & returnedException) Line 74 C++
> WebKit.dll!WebCore::JSCallbackData::invokeCallback(WebCore::JSDOMGlobalObject & globalObject, JSC::JSObject * callback, JSC::JSValue thisValue, JSC::MarkedArgumentBuffer & args, WebCore::JSCallbackData::CallbackType method, JSC::PropertyName functionName, WTF::NakedPtr<JSC::Exception> & returnedException) Line 83 C++
> WebKit.dll!WebCore::JSCallbackDataStrong::invokeCallback(JSC::JSValue thisValue, JSC::MarkedArgumentBuffer & args, WebCore::JSCallbackData::CallbackType callbackType, JSC::PropertyName functionName, WTF::NakedPtr<JSC::Exception> & returnedException) Line 89 C++
> WebKit.dll!WebCore::JSRequestAnimationFrameCallback::handleEvent(double highResTime) Line 70 C++
> WebKit.dll!WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks(double timestamp) Line 217 C++
> WebKit.dll!WebCore::Document::serviceRequestAnimationFrameCallbacks(double timestamp) Line 6190 C++
> WebKit.dll!WebCore::Page::updateRendering() Line 1303 C++
> WebKit.dll!WebView::updateBackingStore(WebCore::FrameView * frameView, HDC__ * dc, bool backingStoreCompletelyDirty, WebView::WindowsToPaint windowsToPaint) Line 1177 C++
> WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1353 C++
> WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2586 C++
> [External Code]
> DumpRenderTreeLib.dll!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & inputLine) Line 1256 C++
> DumpRenderTreeLib.dll!main(int argc, const char * * argv) Line 1617 C++
> DumpRenderTreeLib.dll!dllLauncherEntryPoint(int argc, const char * * argv) Line 1653 C++
> DumpRenderTree.exe!main(int argc, const char * * argv) Line 230 C++
> [External Code]
WebView::paint was called recursively.
Similar issue: Bug 17737 – ASSERTION FAILED: info.bmBitsPixel == 32 Created attachment 373004 [details]
Patch
Comment on attachment 373004 [details] Patch Attachment 373004 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/12589699 New failing tests: imported/blink/animations/display-inline-style-adjust.html Created attachment 373012 [details]
Archive of layout-test-results from ews214 for win-future
The attached test failures were seen while running run-webkit-tests on the win-ews.
Bot: ews214 Port: win-future Platform: CYGWIN_NT-10.0-17763-3.0.5-338.x86_64-x86_64-64bit
Created attachment 373201 [details]
Patch only for trying EWS
Comment on attachment 373201 [details] Patch only for trying EWS Attachment 373201 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/12623445 New failing tests: svg/clip-path/clip-hidpi.svg Created attachment 373209 [details]
Archive of layout-test-results from ews107 for mac-highsierra-wk2
The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Created attachment 373379 [details]
Patch
I think this patch looks very good. Looking at the previous EWS results, it seems the test 'imported/blink/animations/display-inline-style-adjust.html' is failing for AppleWin. Do we know why this is happening? Yup. I filed it in Bug 199311, and removed the test case in r247086. Comment on attachment 373379 [details]
Patch
R=me.
Comment on attachment 373379 [details] Patch Clearing flags on attachment: 373379 Committed r247245: <https://trac.webkit.org/changeset/247245> All reviewed patches have been landed. Closing bug. |