Open Bug 1586602 Opened 5 years ago Updated 11 months ago

Assertion failure: mFirstFrameRefreshArea.Contains(entry.mDirtyRect), at image/AnimationFrameBuffer.cpp:411

Categories

(Core :: Graphics: ImageLib, defect, P2)

defect

Tracking

()

Tracking Status
firefox71 --- affected

People

(Reporter: bc, Unassigned)

References

()

Details

(Keywords: assertion)

Attachments

(1 file)

  1. https://www.reebok.com/us
  2. Assert Nightly Linux/Windows. May need to reload multiple times.

Manually reproduced on Fedora 30 but not Ubuntu 18.10. Could not reproduce on Fedora with Firefox 69.0.2

Assertion failure: mFirstFrameRefreshArea.Contains(entry.mDirtyRect), at z:/build/build/src/image/AnimationFrameBuffer.cpp:411
#01: mozilla::image::Decoder::AllocateFrameInternal(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::SurfaceFormat,mozilla::Maybe<mozilla::image::AnimationParams> const &,mozilla::image::RawAccessFrameRef &&) [image/Decoder.cpp:342]
#02: mozilla::image::Decoder::AllocateFrame(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::SurfaceFormat,mozilla::Maybe<mozilla::image::AnimationParams> const &) [image/Decoder.cpp:266]
#03: mozilla::image::SurfaceSink::Configure(mozilla::image::SurfaceConfig const &) [image/SurfacePipe.cpp:70]
#04: mozilla::image::BlendAnimationFilter<mozilla::image::SurfaceSink>::Configure<mozilla::image::SurfaceConfig>(mozilla::image::BlendAnimationConfig const &,mozilla::image::SurfaceConfig const &) [image/SurfaceFilters.h:515]
#05: mozilla::image::SurfacePipeFactory::MakePipe<mozilla::image::SwizzleConfig,mozilla::image::BlendAnimationConfig,mozilla::image::SurfaceConfig>(mozilla::image::SwizzleConfig const &,mozilla::image::BlendAnimationConfig const &,mozilla::image::SurfaceConfig const &) [image/SurfacePipeFactory.h:582]
#06: mozilla::image::SurfacePipeFactory::CreateSurfacePipe(mozilla::image::Decoder *,mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gfx::SurfaceFormat,mozilla::gfx::SurfaceFormat,mozilla::Maybe<mozilla::image::AnimationParams> const &,_qcms_transform *,mozilla::image::SurfacePipeFlags) [image/SurfacePipeFactory.h:0]
#07: mozilla::image::nsWebPDecoder::CreateFrame(mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const &) [image/decoders/nsWebPDecoder.cpp:242]
#08: mozilla::image::nsWebPDecoder::ReadSingle(unsigned char const *,unsigned __int64,mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const &) [image/decoders/nsWebPDecoder.cpp:423]
#09: mozilla::image::nsWebPDecoder::ReadMultiple(WebPDemuxer *,bool) [image/decoders/nsWebPDecoder.cpp:546]
#10: mozilla::image::nsWebPDecoder::ReadPayload(WebPDemuxer *,bool) [image/decoders/nsWebPDecoder.cpp:411]
#11: mozilla::image::nsWebPDecoder::ReadHeader(WebPDemuxer *,bool) [image/decoders/nsWebPDecoder.cpp:397]
#12: mozilla::image::nsWebPDecoder::ReadData() [image/decoders/nsWebPDecoder.cpp:0]
#13: mozilla::image::nsWebPDecoder::UpdateBuffer(mozilla::image::SourceBufferIterator &,mozilla::image::SourceBufferIterator::State) [image/decoders/nsWebPDecoder.cpp:0]
#14: mozilla::image::nsWebPDecoder::DoDecode(mozilla::image::SourceBufferIterator &,mozilla::image::IResumable *) [image/decoders/nsWebPDecoder.cpp:110]
#15: mozilla::image::Decoder::Decode(mozilla::image::IResumable *) [image/Decoder.cpp:133]
#16: mozilla::image::AnimationSurfaceProvider::Run() [image/AnimationSurfaceProvider.cpp:212]
#17: mozilla::image::DecodePoolWorker::Run() [image/DecodePool.cpp:272]

Hmm, I haven't gotten that assert yet, but I've triggered an invalid image size assert, indicating an image with width or height of 0.

Attached file pp.html

This isn't quite a testcase for the assert, but if you reload it you get two renderings: one with teal on the bottom third of the image, one with white (or transparent) in the bottom third. The image should be the same between the two renderings because the devtools network panel tells me we use the cached file for the image.

(In reply to Timothy Nikkel (:tnikkel) from comment #3)

Created attachment 9099124 [details]
pp.html

This isn't quite a testcase for the assert, but if you reload it you get two renderings: one with teal on the bottom third of the image, one with white (or transparent) in the bottom third. The image should be the same between the two renderings because the devtools network panel tells me we use the cached file for the image.

And that problem reproduces with image.animated.decode-on-demand.threshold-kb set to really high, and image.animated.decode-on-demand.recycle set to false.

OS: Unspecified → All
Priority: -- → P2
Hardware: Unspecified → All
Assignee: nobody → tnikkel
Severity: normal → S3
Assignee: tnikkel → nobody
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: