Closed
Bug 916602
Opened 12 years ago
Closed 12 years ago
Assertion adding IsNull() timestamp in FrameAnimator::GetCurrentImgFrameEndTime()
Categories
(Core :: Graphics: ImageLib, defect)
Tracking
()
RESOLVED
FIXED
mozilla28
People
(Reporter: jesup, Assigned: seth)
References
()
Details
(Keywords: assertion)
Attachments
(5 files, 1 obsolete file)
|
3.79 KB,
text/plain
|
Details | |
|
3.06 KB,
text/plain
|
Details | |
|
2.51 KB,
patch
|
seth
:
review+
|
Details | Diff | Splinter Review |
|
5.19 KB,
patch
|
Details | Diff | Splinter Review | |
|
1.66 KB,
patch
|
tnikkel
:
review+
|
Details | Diff | Splinter Review |
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
| Reporter | ||
Comment 1•12 years ago
|
||
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)
I hit this reliably going to https://crash-stats.mozilla.com/topcrasher/products/Firefox/versions/25.0a2?days=7
| Assignee | ||
Comment 5•12 years ago
|
||
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)
| Assignee | ||
Comment 7•12 years ago
|
||
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.
After locally reverting https://hg.mozilla.org/mozilla-central/rev/810c464191d4 I don't see this anymore.
Blocks: 885277
Comment 9•12 years ago
|
||
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)
| Assignee | ||
Comment 11•12 years ago
|
||
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+
| Assignee | ||
Comment 12•12 years ago
|
||
(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)
| Assignee | ||
Comment 13•12 years ago
|
||
OK, this looks good. (Still needs a try run, though.) Here's the updated version of the patch with review comments addressed.
| Assignee | ||
Updated•12 years ago
|
Assignee: nobody → seth
Status: NEW → ASSIGNED
| Assignee | ||
Comment 14•12 years ago
|
||
Here's an additional patch that addresses the issue identified by Simon in comment 9.
Attachment #824940 -
Flags: review?(tnikkel)
| Assignee | ||
Comment 15•12 years ago
|
||
Try job here:
https://tbpl.mozilla.org/?tree=Try&rev=9db2bebae756
| Assignee | ||
Comment 16•12 years ago
|
||
Ack, this patch had the wrong committer. Fixed.
Attachment #824944 -
Flags: review?(tnikkel)
| Assignee | ||
Updated•12 years ago
|
Attachment #824940 -
Attachment is obsolete: true
Attachment #824940 -
Flags: review?(tnikkel)
| Assignee | ||
Comment 17•12 years ago
|
||
Try looks good.
Updated•12 years ago
|
Attachment #824944 -
Flags: review?(tnikkel) → review+
| Assignee | ||
Comment 18•12 years ago
|
||
Thanks for the review, Timothy.
| Assignee | ||
Comment 19•12 years ago
|
||
Comment 20•12 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/7d2fe9d9a7bf
https://hg.mozilla.org/mozilla-central/rev/0d477f84d533
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.
Description
•