Bug 172009 - [WinCairo] ASSERTION FAILED: !frameIsCompleteAtIndex(index) || !frameHasDecodedNativeImageCompatibleWithOptionsAtIndex(index, subsamplingLevel, decodingOptions)
Summary: [WinCairo] ASSERTION FAILED: !frameIsCompleteAtIndex(index) || !frameHasDecod...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Images (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 170836 171900
Blocks:
  Show dependency treegraph
 
Reported: 2017-05-11 19:29 PDT by Fujii Hironori
Modified: 2017-05-15 19:43 PDT (History)
1 user (show)

See Also:


Attachments
WIP patch (1.41 KB, patch)
2017-05-11 21:43 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Fujii Hironori 2017-05-11 19:29:01 PDT
I see the following assertion failure at some web sites.

> ASSERTION FAILED: !frameIsCompleteAtIndex(index) || !frameHasDecodedNativeImageCompatibleWithOptionsAtIndex(index, subsamplingLevel, decodingOptions)
> C:\webkit\ga\Source\WebCore\platform\graphics\ImageFrameCache.cpp(250) : WebCore::ImageFrameCache::cacheAsyncFrameNativeImageAtIndex

Callstack:

> WTF.dll!WTFCrash() Line 292	C++
> WebKit.dll!WebCore::ImageFrameCache::cacheAsyncFrameNativeImageAtIndex(WTF::RefPtr<_cairo_surface> && nativeImage, unsigned __int64 index, WebCore::SubsamplingLevel subsamplingLevel, const WebCore::DecodingOptions & decodingOptions) Line 250	C++
> WebKit.dll!WebCore::ImageFrameCache::startAsyncDecodingQueue::__l2::void <lambda>(void)::__l4::<lambda>() Line 301	C++
> WebKit.dll!WTF::Function<void __cdecl(void)>::CallableWrapper<void <lambda>(void) >::call() Line 89	C++
> WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 52	C++
> WTF.dll!WTF::dispatchFunctionsFromMainThread() Line 131	C++
> WTF.dll!WTF::ThreadingWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 47	C++
> [External Code]	
> WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 97	C++
> MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 189	C++
> MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 857	C++
> MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 249	C++
> [External Code]	


I tested with WinCairo port, debug build, trunk@216673.

https://play.google.com/
https://www.sony.co.jp/
Comment 1 Fujii Hironori 2017-05-11 21:43:09 PDT
Created attachment 309864 [details]
WIP patch

I think this patch solves the problem. How do you think, Said?
Comment 2 Said Abou-Hallawa 2017-05-12 09:46:44 PDT
I am not sure how you verified your patch. The async image decoding for large images has been disabled for almost two weeks now and the animated images does not start decoding until all the data is received.

The change <http://trac.webkit.org/changeset/216471> caused another regression which is being addressed in https://bugs.webkit.org/show_bug.cgi?id=171900. I suggested in the attached patch removing this particular assertion for now. I suggested also changing function ImageFrameCache::requestFrameAsyncDecodingAtIndex() to let the caller decide whether async image decoding is needed or not.
Comment 3 Fujii Hironori 2017-05-15 19:43:40 PDT
I don't see this assertion failure after fixing bug 171900. Thank you.