Closed
Bug 631657
Opened 15 years ago
Closed 15 years ago
Panorama triggering WARNING: Overflowed nscoord_MAX in conversion to nscoord
Categories
(Firefox Graveyard :: Panorama, defect, P3)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: zpao, Assigned: imphil)
References
Details
Attachments
(3 files, 1 obsolete file)
|
13.06 KB,
text/plain
|
Details | |
|
2.72 KB,
patch
|
roc
:
review+
dbaron
:
approval2.0+
|
Details | Diff | Splinter Review |
|
2.81 KB,
patch
|
Details | Diff | Splinter Review |
I've been seeing this for a long time now but it's harmless, so I held off on reporting, but here I am now.
I caught it in GDB while resizing a group with a single tab and here's the JS stack:
0 iQClass_bounds() ["chrome://browser/content/tabview.js":393]
rect = undefined
this = [object Object]
1 iQClass_width() ["chrome://browser/content/tabview.js":367]
bounds = undefined
this = [object Object]
2 TabItems__update(tab = [object XULElement @ 0x12128c4b0 (native @ 0x120d637e0)]) ["chrome://browser/content/tabview.js":5531]
this = [object Object]
3 TabItems_update(tab = [object XULElement @ 0x12128c4b0 (native @ 0x120d637e0)]) ["chrome://browser/content/tabview.js":5471]
this = [object Object]
4 TabItem_setBounds(options = [object Object], immediately = true, inRect = [object Object]) ["chrome://browser/content/tabview.js":5048]
alphaRange = undefined
pad = undefined
css = [object Object]
rect = [object Object]
validSize = [object Object]
this = [object Object]
5 GroupItem_arrange_children_each(i = 0, child = [object Object], [object Object]) ["chrome://browser/content/tabview.js":3405]
this = [object ChromeWindow @ 0x125d29be0 (native @ 0x125d28838)]
6 GroupItem__gridArrange(options = [object Object], box = [object Object], childrenToArrange = [object Object]) ["chrome://browser/content/tabview.js":3399]
self = [object Object]
index = 0
columns = 1
rects = [object Object]
dropIndex = false
result = [object Object]
arrangeOptions = [object Object]
this = [object Object]
7 GroupItem_arrange(options = [object Object]) ["chrome://browser/content/tabview.js":3266]
box = [object Object]
shouldStack = false
childrenToArrange = [object Object]
this = [object Object]
8 GroupItem_setBounds(options = [object Object], immediately = true, inRect = [object Object]) ["chrome://browser/content/tabview.js":2573]
offset = [object Object]
contentCSS = [object Object]
titlebarCSS = [object Object]
css = [object Object]
titleHeight = 18
rect = [object Object]
validSize = [object Object]
this = [object Object]
9 anonymous(e = [object MouseEvent @ 0x1250b95d0 (native @ 0x1250b3ae0)]) ["chrome://browser/content/tabview.js":1800]
oldWidth = undefined
minWidth = undefined
box = [object Object]
mouse = [object Object]
this = [object ChromeWindow @ 0x105eaad40 (native @ 0x105ea93f8)]
10 anonymous(event = [object MouseEvent @ 0x1250b95d0 (native @ 0x1250b3ae0)]) ["chrome://browser/content/tabview.js":692]
this = [object ChromeWindow @ 0x105eaad40 (native @ 0x105ea93f8)]
The undefined being used all around is suspicious to me, but could just be a red herring.
Joe: Not sure if there's anything you'd be able to say about this, but since this is hitting a warning in gfx, I figured I'd CC you.
| Reporter | ||
Comment 1•15 years ago
|
||
backtrace from gdb in case it ends up being relevant.
| Assignee | ||
Comment 2•15 years ago
|
||
I get the same message (and there seem to be some more similar bug reports out there), and it got quite annoying (got this every couple seconds with Panorama and playing a Flash movie).
So that's what I think happens:
- in nsBlockFrame.cpp:2833 we have
nsRuleNode::ComputeCoordPercentCalc(aCoord, nscoord_MAX)
aCoord is:
(gdb) p aCoord
$13 = (const nsStyleCoord &) @0x7f66fb459c78: {mUnit = eStyleUnit_Percent, mValue = {mInt = 1065353216, mFloat = 1, mPointer = 0x7fffffff3f800000}}
(gdb) p aCoord.GetPercentValue()
$14 = 1
- in nsNodeRule:497 we have
return NSToCoordFloorClamped(aPercentageBasis * aCoord.GetPercentValue());
So that's effectively calling NSToCoordFloorClamped(nscoord_MAX) and there the warning comes from.
I attached a patch that should change no functionality and get rid of the warning, but I'm not sure why the check was made with >= instead of > in the first place, so I'm not completely sure that really nothing regresses with this.
| Assignee | ||
Comment 3•15 years ago
|
||
| Assignee | ||
Updated•15 years ago
|
Attachment #513163 -
Flags: review?(dbaron)
I suspect it might be better to make the NS_WARNING into NS_WARN_IF_FALSE instead, so you make the change for whether we warn but not whether we return.
That said, I think roc should probably review, since he wrote this (https://hg.mozilla.org/mozilla-central/rev/54946665b7c0).
Also, you should make the same change to NSToCoordFloorClamped, NSToCoordCeilClamped, and NSToCoordRoundWithClamp.
| Assignee | ||
Comment 5•15 years ago
|
||
Now using NS_WARN_IF_FALSE and I also changed all relevant functions. The new patch changes no functionality at all, only the warning messages.
Attachment #513163 -
Attachment is obsolete: true
Attachment #513260 -
Flags: review?
Attachment #513163 -
Flags: review?(dbaron)
| Assignee | ||
Updated•15 years ago
|
Attachment #513260 -
Flags: review? → review?(roc)
Attachment #513260 -
Flags: review?(roc) → review+
| Assignee | ||
Comment 6•15 years ago
|
||
Can/should this go to mozilla-central before Firefox 4? Or should it wait until after the final?
Comment on attachment 513260 [details] [diff] [review]
patch v2
It's DEBUG-only, so a2.0=dbaron.
Attachment #513260 -
Flags: approval2.0+
| Assignee | ||
Comment 8•15 years ago
|
||
Assignee: nobody → mail
Status: NEW → ASSIGNED
| Assignee | ||
Updated•15 years ago
|
Keywords: checkin-needed
Comment 9•15 years ago
|
||
Updated•10 years ago
|
Product: Firefox → Firefox Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•