Closed Bug 916602 Opened 12 years ago Closed 12 years ago

Assertion adding IsNull() timestamp in FrameAnimator::GetCurrentImgFrameEndTime()

Categories

(Core :: Graphics: ImageLib, defect)

22 Branch
x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla28

People

(Reporter: jesup, Assigned: seth)

References

()

Details

(Keywords: assertion)

Attachments

(5 files, 1 obsolete file)

Attached file timestamp.assert
Recent inbound pull (yesterday); debug build on Linux x64 F17: Hit an assertion when leaving a github page; it was animating an icon for a file I'd visited and then hit back to get to the github page again. I then hit back again and it asserted. See attached callstack
I visited rtcpeerconnection.js (last file)
I hit what looks like the same thing on Friday; was waiting to get back home before filing, but Randell beat me to it. Randell's stack is better since his looks like debug and mine is debug+opt, and I also got confused about which process it was and didn't manage to catch it in gdb, so I have only the console output stack.
Attachment #805052 - Attachment mime type: text/x-vhdl → text/plain
Any idea what's up here?
Component: Graphics → ImageLib
Flags: needinfo?(seth)
Another FrameAnimator regression. =\ I'll investigate this.
Flags: needinfo?(seth)
poking again about this; I think you said there was something that probably ought to be backed out until this was fixed.
Flags: needinfo?(seth)
Yes. I'll leave the needinfo request open until I deal with this. Basically I just need to make a build with that patch backed out to confirm that my hunch about the cause is correct.
Attached patch possible fix?Splinter Review
My, ImageLib is complicated. I suspect something like the attached patch might fix it, by being more careful about setting animation time when mAnimating = true, but I'm nowhere near certain. I didn't compile or test it; the only machine I have that is powerful enough to compile Firefox takes ~8 hours to do so. Anyway, if additions to null timestamps assert, isn't the statement in GetCurrentImgFrameEndTime that does `return TimeStamp() + TimeDuration::FromMilliseconds(static_cast<double>(UINT64_MAX));` also quite wrong?
Comment on attachment 807850 [details] [diff] [review] possible fix? It's generally good to make review or feedback requests when attaching patches.
Attachment #807850 - Flags: review?(seth)
Comment on attachment 807850 [details] [diff] [review] possible fix? Review of attachment 807850 [details] [diff] [review]: ----------------------------------------------------------------- Looks good, Simon! I apologize for not noticing the patch you posted. I've gone ahead and reviewed this patch as normal, but in the interest of getting this fixed ASAP I'm going to go ahead and making the changes myself so I can verify that this patch fixes the issue. ::: image/src/RasterImage.cpp @@ +1434,5 @@ > > EnsureAnimExists(); > > imgFrame* currentFrame = GetCurrentImgFrame(); > + if (currentFrame && currentFrame->GetTimeout() < 0) { // -1 means display this frame forever I'd suggest moving this comment to the line above and maybe slightly rewording. This ends up being a pretty long line otherwise. @@ +1482,2 @@ > StopAnimation(); > + mAnimating = false; With this change, every caller of StopAnimation also executes "mAnimating = false". It should just move inside StopAnimation. (Which makes more sense anyway.)
Attachment #807850 - Flags: review?(seth) → review+
(In reply to Simon Lindholm from comment #9) > Anyway, if additions to null timestamps assert, isn't the statement in > GetCurrentImgFrameEndTime that does `return TimeStamp() + > TimeDuration::FromMilliseconds(static_cast<double>(UINT64_MAX));` also quite > wrong? Absolutely. I've included a fix for this in my modified version of your patch.
Flags: needinfo?(seth)
OK, this looks good. (Still needs a try run, though.) Here's the updated version of the patch with review comments addressed.
Assignee: nobody → seth
Status: NEW → ASSIGNED
Here's an additional patch that addresses the issue identified by Simon in comment 9.
Attachment #824940 - Flags: review?(tnikkel)
Ack, this patch had the wrong committer. Fixed.
Attachment #824944 - Flags: review?(tnikkel)
Attachment #824940 - Attachment is obsolete: true
Attachment #824940 - Flags: review?(tnikkel)
Try looks good.
Attachment #824944 - Flags: review?(tnikkel) → review+
Thanks for the review, Timothy.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: