Assertion failure: mGetIndex == aExpectedFrame, at src/image/AnimationFrameBuffer.cpp:187

RESOLVED FIXED in Firefox 60

Status

()

defect
P3
normal
RESOLVED FIXED
a year ago
a year ago

People

(Reporter: tsmith, Assigned: tnikkel)

Tracking

(Blocks 1 bug, {assertion, regression, testcase})

Trunk
mozilla60
Points:
---
Dependency tree / graph
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(firefox-esr52 unaffected, firefox58 unaffected, firefox59 unaffected, firefox60 fixed)

Details

(Whiteboard: [gfx-noted])

Attachments

(3 attachments, 3 obsolete attachments)

Reporter

Description

a year ago
Posted file testcase.html
Assertion failure: mGetIndex == aExpectedFrame, at src/image/AnimationFrameBuffer.cpp:187

#0 mozilla::image::AnimationFrameBuffer::AdvanceTo(unsigned long) src/image/AnimationFrameBuffer.cpp:183:3
#1 mozilla::image::AnimationSurfaceProvider::Advance(unsigned long) src/image/AnimationSurfaceProvider.cpp:119:30
#2 mozilla::image::FrameAnimator::AdvanceFrame(mozilla::image::AnimationState&, mozilla::image::DrawableSurface&, mozilla::TimeStamp) src/image/FrameAnimator.cpp:378:11
#3 mozilla::image::FrameAnimator::RequestRefresh(mozilla::image::AnimationState&, mozilla::TimeStamp const&, bool) src/image/FrameAnimator.cpp:451:30
#4 mozilla::image::RasterImage::RequestRefresh(mozilla::TimeStamp const&) src/image/RasterImage.cpp:173:27
#5 nsRefreshDriver::Tick(long, mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:2035:27
#6 mozilla::RefreshDriverTimer::TickRefreshDrivers(long, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) src/layout/base/nsRefreshDriver.cpp:310:7
#7 mozilla::RefreshDriverTimer::Tick(long, mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:332:5
#8 mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers(mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:773:5
#9 mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:686:35
#10 mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:587:9
#11 mozilla::layout::VsyncChild::RecvNotify(mozilla::TimeStamp const&) src/layout/ipc/VsyncChild.cpp:68:16
#12 mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&) src/obj-firefox/ipc/ipdl/PVsyncChild.cpp:155:20
#13 mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) src/obj-firefox/ipc/ipdl/PBackgroundChild.cpp:1943:28
#14 mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&) src/ipc/glue/MessageChannel.cpp:2133:25
#15 mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) src/ipc/glue/MessageChannel.cpp:2063:17
#16 mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) src/ipc/glue/MessageChannel.cpp:1909:5
#17 mozilla::ipc::MessageChannel::MessageTask::Run() src/ipc/glue/MessageChannel.cpp:1942:15
#18 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1040:14
#19 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:517:10
#20 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:125:5
#21 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:326:10
#22 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:299:3
#23 nsBaseAppShell::Run() src/widget/nsBaseAppShell.cpp:157:27
#24 XRE_RunAppShell() src/toolkit/xre/nsEmbedFunctions.cpp:892:22
#25 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:269:9
#26 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:326:10
#27 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:299:3
#28 XRE_InitChildProcess(int, char**, XREChildData const*) src/toolkit/xre/nsEmbedFunctions.cpp:718:34
#29 content_process_main(mozilla::Bootstrap*, int, char**) src/browser/app/../../ipc/contentproc/plugin-container.cpp:50:30
#30 main src/browser/app/nsBrowserApp.cpp:280:18
#31 __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
#32 _start (firefox+0x423444)
Flags: in-testsuite?
Reporter

Comment 1

a year ago
Posted image testcase.gif
Regression from bug 523950.
Assignee: nobody → aosmond
Status: NEW → ASSIGNED
Depends on: 523950
Keywords: regression
Priority: -- → P3
Whiteboard: [gfx-noted]
Assignee

Comment 3

a year ago
Posted patch patch (obsolete) — Splinter Review
Assignee: aosmond → tnikkel
Attachment #8956322 - Flags: review?(aosmond)
Assignee

Comment 4

a year ago
Posted patch patch v2 (obsolete) — Splinter Review
Actually that's not the right condition. The length of the exist frames doesn't really tell us where we are inserting. Instead we want to expose on the decoder whether this frame is going to be reported to update the frame count on the image and hence FrameAnimator. Thats done via TakeCompleteFrameCount which is used to NotifyProgress and NotifyDecodeComplete which will update the frame count.
Attachment #8956322 - Attachment is obsolete: true
Attachment #8956322 - Flags: review?(aosmond)
Attachment #8956350 - Flags: review?(aosmond)
Assignee

Comment 5

a year ago
Posted patch patch v3 (obsolete) — Splinter Review
Attachment #8956350 - Attachment is obsolete: true
Attachment #8956350 - Flags: review?(aosmond)
Attachment #8956367 - Flags: review?(aosmond)
Attachment #8956367 - Flags: review?(aosmond) → review+
Assignee

Comment 6

a year ago
Posted patch patch v4Splinter Review
This is less hacky and captures better what we want.
Attachment #8956367 - Attachment is obsolete: true
Attachment #8957078 - Flags: review?(aosmond)
Attachment #8957078 - Flags: review?(aosmond) → review+

Comment 7

a year ago
Pushed by tnikkel@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/6b039167ba76
Don't insert frames into our AnimationFrameBuffer that we consider in error and unusable. r=aosmond

Comment 8

a year ago
Pushed by tnikkel@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/b4faaa640ed5
Disable reftest for now to investigate why it doesn't work on android.

Comment 9

a year ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/6b039167ba76
https://hg.mozilla.org/mozilla-central/rev/b4faaa640ed5
Status: ASSIGNED → RESOLVED
Last Resolved: a year ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla60
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.