Bug 173089 - ASSERTION FAILED: !canAnimate() && !m_currentFrame
Summary: ASSERTION FAILED: !canAnimate() && !m_currentFrame
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Fujii Hironori
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-06-07 22:15 PDT by Fujii Hironori
Modified: 2017-06-30 10:28 PDT (History)
6 users (show)

See Also:


Attachments
big size animation gif (1000x1000, loop count:1) (5.08 KB, image/gif)
2017-06-08 01:13 PDT, Fujii Hironori
no flags Details
WIP patch (1.65 KB, patch)
2017-06-08 01:26 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Patch (8.18 KB, patch)
2017-06-12 01:34 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews100 for mac-elcapitan (987.41 KB, application/zip)
2017-06-12 02:34 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews114 for mac-elcapitan (1.74 MB, application/zip)
2017-06-12 02:53 PDT, Build Bot
no flags Details
Patch (8.22 KB, patch)
2017-06-12 03:22 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews101 for mac-elcapitan (1.08 MB, application/zip)
2017-06-12 04:05 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews114 for mac-elcapitan (1.74 MB, application/zip)
2017-06-12 04:45 PDT, Build Bot
no flags Details
Patch (8.44 KB, patch)
2017-06-12 23:21 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Patch (8.47 KB, patch)
2017-06-13 19:30 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Patch (8.36 KB, patch)
2017-06-27 22:37 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Patch (8.55 KB, patch)
2017-06-28 22:26 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews117 for mac-elcapitan (1.75 MB, application/zip)
2017-06-28 23:54 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews103 for mac-elcapitan (995.83 KB, application/zip)
2017-06-29 12:18 PDT, Build Bot
no flags Details
Patch (8.41 KB, patch)
2017-06-29 22:28 PDT, Fujii Hironori
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews107 for mac-elcapitan-wk2 (1.18 MB, application/zip)
2017-06-29 23:32 PDT, Build Bot
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Fujii Hironori 2017-06-07 22:15:23 PDT
I see a following assertion failure while using MiniBrowser of WinCairo port (Debug buld, trunk@217917).

> ASSERTION FAILED: !canAnimate() && !m_currentFrame
> C:\webkit\ga\Source\WebCore\platform\graphics\BitmapImage.cpp(191) : WebCore::BitmapImage::draw

Callstack:

> WTF.dll!WTFCrash() Line 292	C++
> WebKit.dll!WebCore::BitmapImage::draw(WebCore::GraphicsContext & context, const WebCore::FloatRect & destRect, const WebCore::FloatRect & srcRect, WebCore::CompositeOperator op, WebCore::BlendMode mode, WebCore::DecodingMode decodingMode, WebCore::ImageOrientationDescription description) Line 191	C++
> WebKit.dll!WebCore::GraphicsContext::drawImage(WebCore::Image & image, const WebCore::FloatRect & destination, const WebCore::FloatRect & source, const WebCore::ImagePaintingOptions & imagePaintingOptions) Line 732	C++
> WebKit.dll!WebCore::GraphicsContext::drawImage(WebCore::Image & image, const WebCore::FloatRect & destination, const WebCore::ImagePaintingOptions & imagePaintingOptions) Line 718	C++
> WebKit.dll!WebCore::RenderImage::paintIntoRect(WebCore::PaintInfo & paintInfo, const WebCore::FloatRect & rect) Line 590	C++
> WebKit.dll!WebCore::RenderImage::paintReplaced(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 480	C++
> WebKit.dll!WebCore::RenderReplaced::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 219	C++
> WebKit.dll!WebCore::RenderImage::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 495	C++
> WebKit.dll!WebCore::paintPhase(WebCore::RenderElement & element, WebCore::PaintPhase phase, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1214	C++
> WebKit.dll!WebCore::RenderElement::paintAsInlineBlock(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1229	C++
> WebKit.dll!WebCore::InlineElementBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit __formal, WebCore::LayoutUnit __formal) Line 92	C++
> WebKit.dll!WebCore::InlineFlowBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 1231	C++
> WebKit.dll!WebCore::RootInlineBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 177	C++
> WebKit.dll!WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject * renderer, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 262	C++
> WebKit.dll!WebCore::RenderBlockFlow::paintInlineChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 3621	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1590	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderBlock::paintChild(WebCore::RenderBox & child, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect, WebCore::RenderBlock::PaintBlockType paintType) Line 1649	C++
> WebKit.dll!WebCore::RenderBlock::paintChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect) Line 1609	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1604	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase phase, const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4839	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragments(const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, WebCore::GraphicsContext & contextForTransparencyLayer, const WebCore::LayoutRect & transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4815	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4431	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext & context, const WebCore::LayoutRect & damageRect, const WebCore::LayoutSize & subpixelOffset, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRoot, unsigned int paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 3862	C++
> WebKit.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext & context, const WebCore::IntRect & dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4483	C++
> WebKit.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext & context, const WebCore::IntRect & rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1200	C++
> WebKit.dll!WebCore::RenderWidget::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 243	C++
> WebKit.dll!WebCore::RenderWidget::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 293	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase phase, const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4839	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragments(const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, WebCore::GraphicsContext & contextForTransparencyLayer, const WebCore::LayoutRect & transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4815	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4431	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext & context, const WebCore::LayoutRect & damageRect, const WebCore::LayoutSize & subpixelOffset, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRoot, unsigned int paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 3862	C++
> WebKit.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext & context, const WebCore::IntRect & dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4483	C++
> WebKit.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext & context, const WebCore::IntRect & rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1200	C++
> WebKit.dll!WebCore::RenderWidget::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 243	C++
> WebKit.dll!WebCore::RenderWidget::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 293	C++
> WebKit.dll!WebCore::paintPhase(WebCore::RenderElement & element, WebCore::PaintPhase phase, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1214	C++
> WebKit.dll!WebCore::RenderElement::paintAsInlineBlock(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1229	C++
> WebKit.dll!WebCore::InlineElementBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit __formal, WebCore::LayoutUnit __formal) Line 92	C++
> WebKit.dll!WebCore::InlineFlowBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 1231	C++
> WebKit.dll!WebCore::RootInlineBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 177	C++
> WebKit.dll!WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject * renderer, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 262	C++
> WebKit.dll!WebCore::RenderBlockFlow::paintInlineChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 3621	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1590	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderBlock::paintChild(WebCore::RenderBox & child, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect, WebCore::RenderBlock::PaintBlockType paintType) Line 1649	C++
> WebKit.dll!WebCore::RenderBlock::paintChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect) Line 1609	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1604	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase phase, const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4839	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragments(const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, WebCore::GraphicsContext & contextForTransparencyLayer, const WebCore::LayoutRect & transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4815	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4431	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext & context, const WebCore::LayoutRect & damageRect, const WebCore::LayoutSize & subpixelOffset, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRoot, unsigned int paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 3862	C++
> WebKit.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext & context, const WebCore::IntRect & dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4483	C++
> WebKit.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext & context, const WebCore::IntRect & rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1200	C++
> WebKit.dll!WebCore::RenderWidget::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 243	C++
> WebKit.dll!WebCore::RenderWidget::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 293	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase phase, const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4839	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragments(const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, WebCore::GraphicsContext & contextForTransparencyLayer, const WebCore::LayoutRect & transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4815	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4431	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext & context, const WebCore::LayoutRect & damageRect, const WebCore::LayoutSize & subpixelOffset, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRoot, unsigned int paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 3862	C++
> WebKit.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext & context, const WebCore::IntRect & dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4483	C++
> WebKit.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext & context, const WebCore::IntRect & rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1200	C++
> WebKit.dll!WebCore::RenderWidget::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 243	C++
> WebKit.dll!WebCore::RenderWidget::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 293	C++
> WebKit.dll!WebCore::paintPhase(WebCore::RenderElement & element, WebCore::PaintPhase phase, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1214	C++
> WebKit.dll!WebCore::RenderElement::paintAsInlineBlock(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & childPoint) Line 1229	C++
> WebKit.dll!WebCore::InlineElementBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit __formal, WebCore::LayoutUnit __formal) Line 92	C++
> WebKit.dll!WebCore::InlineFlowBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 1231	C++
> WebKit.dll!WebCore::RootInlineBox::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::LayoutUnit lineTop, WebCore::LayoutUnit lineBottom) Line 177	C++
> WebKit.dll!WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject * renderer, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 262	C++
> WebKit.dll!WebCore::RenderBlockFlow::paintInlineChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 3621	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1590	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderBlockFlow::paintFloats(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, bool preservePhase) Line 2281	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1757	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderBlock::paintChild(WebCore::RenderBox & child, WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect, WebCore::RenderBlock::PaintBlockType paintType) Line 1649	C++
> WebKit.dll!WebCore::RenderBlock::paintChildren(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset, WebCore::PaintInfo & paintInfoForChild, bool usePrintRect) Line 1609	C++
> WebKit.dll!WebCore::RenderBlock::paintContents(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1604	C++
> WebKit.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1748	C++
> WebKit.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo & paintInfo, const WebCore::LayoutPoint & paintOffset) Line 1569	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase phase, const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4839	C++
> WebKit.dll!WebCore::RenderLayer::paintForegroundForFragments(const WTF::Vector<WebCore::LayerFragment,1,WTF::CrashOnOverflow,16> & layerFragments, WebCore::GraphicsContext & context, WebCore::GraphicsContext & contextForTransparencyLayer, const WebCore::LayoutRect & transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo & localPaintingInfo, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4814	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4431	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paintList(WTF::Vector<WebCore::RenderLayer *,0,WTF::CrashOnOverflow,16> * list, WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4542	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4442	C++
> WebKit.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4072	C++
> WebKit.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext & context, const WebCore::RenderLayer::LayerPaintingInfo & paintingInfo, unsigned int paintFlags) Line 4054	C++
> WebKit.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext & context, const WebCore::LayoutRect & damageRect, const WebCore::LayoutSize & subpixelOffset, unsigned int paintBehavior, WebCore::RenderObject * subtreePaintRoot, unsigned int paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 3862	C++
> WebKit.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext & context, const WebCore::IntRect & dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4483	C++
> WebKit.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext & context, const WebCore::IntRect & rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1200	C++
> WebKit.dll!WebView::paintIntoBackingStore(WebCore::FrameView * frameView, HDC__ * bitmapDC, const WebCore::IntRect & dirtyRectPixels, WebView::WindowsToPaint windowsToPaint) Line 1424	C++
> WebKit.dll!WebView::updateBackingStore(WebCore::FrameView * frameView, HDC__ * dc, bool backingStoreCompletelyDirty, WebView::WindowsToPaint windowsToPaint) Line 1172	C++
> WebKit.dll!WebView::paint(HDC__ * dc, __int64 options) Line 1336	C++
> WebKit.dll!WebView::WebViewWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 2571	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]
Comment 1 Fujii Hironori 2017-06-07 23:35:05 PDT
I saw this again by reloading http://www.nicovideo.jp/ again and again.
http://ads.nicovideo.jp/assets/images/06/065300e6d96bcb502826d5b4c3f72f70.gif is the image url.
Comment 2 Fujii Hironori 2017-06-08 01:13:49 PDT
Created attachment 312284 [details]
big size animation gif (1000x1000, loop count:1)

This happens always when painting a big finished animation GIF image.

> bool ImageSource::shouldUseAsyncDecoding()
> {
>     if (!isDecoderAvailable())
>         return false;
>     // FIXME: figure out the best heuristic for enabling async image decoding.
>     return size().area() * sizeof(RGBA32) >= (frameCount() > 1 ? 100 * KB : 500 * KB);
> }
Comment 3 Fujii Hironori 2017-06-08 01:26:12 PDT
Created attachment 312286 [details]
WIP patch
Comment 4 Fujii Hironori 2017-06-12 01:34:18 PDT
Created attachment 312639 [details]
Patch
Comment 5 Build Bot 2017-06-12 02:34:13 PDT
Comment on attachment 312639 [details]
Patch

Attachment 312639 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/3916346

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 6 Build Bot 2017-06-12 02:34:15 PDT
Created attachment 312643 [details]
Archive of layout-test-results from ews100 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews100  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 7 Build Bot 2017-06-12 02:53:41 PDT
Comment on attachment 312639 [details]
Patch

Attachment 312639 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/3916358

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 8 Build Bot 2017-06-12 02:53:42 PDT
Created attachment 312644 [details]
Archive of layout-test-results from ews114 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 9 Fujii Hironori 2017-06-12 03:22:22 PDT
Created attachment 312648 [details]
Patch
Comment 10 Build Bot 2017-06-12 04:05:41 PDT
Comment on attachment 312648 [details]
Patch

Attachment 312648 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/3916694

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 11 Build Bot 2017-06-12 04:05:42 PDT
Created attachment 312650 [details]
Archive of layout-test-results from ews101 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 12 Build Bot 2017-06-12 04:45:02 PDT
Comment on attachment 312648 [details]
Patch

Attachment 312648 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/3916752

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 13 Build Bot 2017-06-12 04:45:04 PDT
Created attachment 312652 [details]
Archive of layout-test-results from ews114 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 14 Fujii Hironori 2017-06-12 21:00:44 PDT
What's happening in mac and mac-debug EWS?

There is a comment in TestExpectations of mac-wk1:

https://trac.webkit.org/browser/webkit/trunk/LayoutTests/platform/mac-wk1/TestExpectations?rev=217880#L123

> # Animated image throttling behaves differently on WK1.
> fast/images/animated-gif-body-outside-viewport.html [ Skip ]
> fast/images/animated-gif-window-resizing.html [ Skip ]
> fast/images/animated-gif-zooming.html [ Skip ]
Comment 15 Fujii Hironori 2017-06-12 23:18:41 PDT
I need to do the following trick as other test cases do.

> // Force layout and display so the image frame starts decoding.
> document.body.offsetHeight;
> testRunner.display();
Comment 16 Fujii Hironori 2017-06-12 23:21:21 PDT
Created attachment 312753 [details]
Patch
Comment 17 Fujii Hironori 2017-06-13 19:30:45 PDT
Created attachment 312847 [details]
Patch
Comment 18 Fujii Hironori 2017-06-14 16:50:22 PDT
Could you review, Said?
Comment 19 Fujii Hironori 2017-06-26 18:54:50 PDT
Could anyone review my patch?
Comment 20 Said Abou-Hallawa 2017-06-27 20:40:25 PDT
Comment on attachment 312847 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=312847&action=review

> Source/WebCore/ChangeLog:8
> +        Test: fast/images/animated-gif-paint-after-animation.html

Please move this line after the comment below.

> Source/WebCore/platform/graphics/BitmapImage.cpp:-191
> -        ASSERT(!canAnimate() && !m_currentFrame);

You can use:

ASSERT(!canAnimate() && (!m_currentFrame || m_animationFinished));

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:12
> +    window.onload = function() {

Instead of listening to the onload event you can move all the script at the end of <body> tag.

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:15
> +        img.src = 'resources/animated-red-green-blue-1000x1000-repeat-1.gif';

Usually setting the image source comes after defining the onload function:

img.onload = function() {
....
}
img.src = "...".

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:25
> +                window.setTimeout(function() {
> +                    testRunner.notifyDone();
> +                }, 500);

Instead of using the css animation and the setTimeout(), I think this can be replaced by the following:

// Force the page to be displayed. The image element is already invalidated when the frame finished decoding.
testRunner.display();

// Change the width of the img element
img.width = "100"

// Force a final layout and display so the image last frame is drawn.
document.body.offsetHeight;
testRunner.display();

testRunner.notifyDone();

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:34
> +    @keyframes n {
> +        from { width : 10px; }
> +        to { width: 20px; }
> +    }

Why do you need to add this animation? I think you want to force a last redraw after the last frame is drawn. You can change the width of the element manually after receiving the webkitImageFrameReady event; see above.

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:36
> +        display: block;

Is setting the display to "block" really needed for the test?
Comment 21 Fujii Hironori 2017-06-27 21:34:48 PDT
Comment on attachment 312847 [details]
Patch

Thank you very much, Said. I'll revise the patch.
Comment 22 Fujii Hironori 2017-06-27 22:37:34 PDT
Created attachment 313992 [details]
Patch
Comment 23 Said Abou-Hallawa 2017-06-28 11:39:56 PDT
Comment on attachment 313992 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=313992&action=review

> LayoutTests/fast/images/animated-gif-paint-after-animation.html:31
> +            window.setTimeout(function() {
> +                // Force a final layout and display so the image last frame is drawn.
> +                img.width = "100";
> +                if (window.testRunner)
> +                    testRunner.notifyDone();
> +            }, 500);

Using the setTimeout() makes the test non deterministic. There is no guarantee here that the image will draw its last frame twice in 500ms. Also the 500ms is way too long period to wait for. As I said earlier, you can control the layout and display yourself so you can know exactly when the test should end:

// Force the page to be displayed. The image element is already invalidated when the frame finished decoding.
testRunner.display();

// Change the width of the img element
img.width = "100";

// notifyDone() will force the last layout and display.
testRunner.notifyDone();
Comment 24 Fujii Hironori 2017-06-28 22:26:30 PDT
Thank you for the review.
It needs to wait at least 30ms for finishing the animation.
I've found the way without setTimeout by counting decoded frames.
Comment 25 Fujii Hironori 2017-06-28 22:26:56 PDT
Created attachment 314113 [details]
Patch
Comment 26 Build Bot 2017-06-28 23:54:10 PDT
Comment on attachment 314113 [details]
Patch

Attachment 314113 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/4018364

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 27 Build Bot 2017-06-28 23:54:12 PDT
Created attachment 314119 [details]
Archive of layout-test-results from ews117 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews117  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 28 Build Bot 2017-06-29 12:18:37 PDT
Comment on attachment 314113 [details]
Patch

Attachment 314113 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/4020855

New failing tests:
fast/images/animated-gif-paint-after-animation.html
Comment 29 Build Bot 2017-06-29 12:18:38 PDT
Created attachment 314150 [details]
Archive of layout-test-results from ews103 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews103  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 30 Said Abou-Hallawa 2017-06-29 13:27:13 PDT
(In reply to Fujii Hironori from comment #24)
> Thank you for the review.
> It needs to wait at least 30ms for finishing the animation.
> I've found the way without setTimeout by counting decoded frames.

I was assuming your animated image has only two frames. Just delete the last frame of the image and have it only contain two frames: red and green. Then your code should be simpler 

    img.addEventListener("webkitImageFrameReady", function() {
        // Force the page to be displayed. The image element is already invalidated when the frame finished decoding.
        if (window.testRunner)
            testRunner.display();
        // Change the width of the img element
        img.width = "100";
        // notifyDone() will force the last layout and display.
        if (window.testRunner)
           testRunner.notifyDone();
    });
    img.src = 'resources/animated-red-green-1000x1000-repeat-1.gif';

Also make sure the test asserts without your patch.
Comment 31 Said Abou-Hallawa 2017-06-29 13:45:03 PDT
(In reply to Build Bot from comment #29)
> Created attachment 314150 [details]
> Archive of layout-test-results from ews103 for mac-elcapitan
> 
> The attached test failures were seen while running run-webkit-tests on the
> mac-ews.
> Bot: ews103  Port: mac-elcapitan  Platform: Mac OS X 10.11.6

The test is timing out because DRT does not force drawing when a repaint happens. Instead DRT waits for notifyDone() to do the last draw. Your code relies on having the event webkitImageFrameReady is called two times and the image is drawn four times:
1st time: draws frame 0 and request frame 1 for decoding.
2nd time: draws frame 1 and request frame 2 for decoding.
3nd time: draws frame 2.
4th time: draws frame 2.

Only the first draw happens because onload calls testRunner.display(). The second and the third draws do not happen because webkitImageFrameReady callback returns when count != 2. And webkitImageFrameReady can't fire unless a draw happens. The fourth time does not happen because testRunner.notifyDone() is not called.

Changing the image to have two frames only and changing the webkitImageFrameReady callback as I mentioned above should draw the image three times and testRunner.notifyDone() is guaranteed to be called.
Comment 32 Fujii Hironori 2017-06-29 21:22:17 PDT
How to create an animation gif with ImageMagick

convert -size 1000x1000 xc:red red.png
convert -size 1000x1000 xc:green green.png
convert -delay 1 -loop 1 red.png green.png animated-red-green-1000x1000-repeat-1.gif
Comment 33 Fujii Hironori 2017-06-29 22:28:10 PDT
Created attachment 314235 [details]
Patch
Comment 34 Simon Fraser (smfr) 2017-06-29 22:51:52 PDT
I hit this assertion on macOS today.
Comment 35 Build Bot 2017-06-29 23:32:19 PDT
Comment on attachment 314235 [details]
Patch

Attachment 314235 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/4024594

New failing tests:
fast/workers/worker-exception-during-navigation.html
Comment 36 Build Bot 2017-06-29 23:32:21 PDT
Created attachment 314239 [details]
Archive of layout-test-results from ews107 for mac-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-elcapitan-wk2  Platform: Mac OS X 10.11.6
Comment 37 Fujii Hironori 2017-06-30 00:17:27 PDT
Comment on attachment 314239 [details]
Archive of layout-test-results from ews107 for mac-elcapitan-wk2

(In reply to Build Bot from comment #35)
> Attachment 314235 [details] did not pass mac-wk2-ews (mac-wk2):
> Output: http://webkit-queues.webkit.org/results/4024594
> New failing tests:
> fast/workers/worker-exception-during-navigation.html

This EWS failure seems Bug 102131.
Comment 38 WebKit Commit Bot 2017-06-30 10:28:24 PDT
Comment on attachment 314235 [details]
Patch

Clearing flags on attachment: 314235

Committed r219003: <http://trac.webkit.org/changeset/219003>
Comment 39 WebKit Commit Bot 2017-06-30 10:28:26 PDT
All reviewed patches have been landed.  Closing bug.