Last Comment Bug 708036 - debug assert abort in nsLayoutUtils::InflationMinFontSizeFor() when playing fullscreen video test
: debug assert abort in nsLayoutUtils::InflationMinFontSizeFor() when playing f...
Status: RESOLVED FIXED
[font-inflation: abort][readability]
:
Product: Core
Classification: Components
Component: Layout (show other bugs)
: unspecified
: ARM Android
: -- normal (vote)
: mozilla12
Assigned To: David Baron :dbaron: ⌚️UTC-7 (review requests must explain patch)
:
Mentors:
: 713009 (view as bug list)
Depends on:
Blocks: font-inflation
  Show dependency treegraph
 
Reported: 2011-12-06 12:01 PST by Chris Peterson [:cpeterson]
Modified: 2012-01-11 22:01 PST (History)
8 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
12+


Attachments
stack trace (18.96 KB, text/plain)
2011-12-06 12:01 PST, Chris Peterson [:cpeterson]
no flags Details
patch (4.87 KB, patch)
2011-12-12 16:22 PST, David Baron :dbaron: ⌚️UTC-7 (review requests must explain patch)
bzbarsky: review+
Details | Diff | Review

Description Chris Peterson [:cpeterson] 2011-12-06 12:01:13 PST
Created attachment 579397 [details]
stack trace

1. Load http://people.mozilla.com/~nhirata/html_tp/elephants-dream.webm
2. Long press the video and choose "Full Screen" from the context menu.

EXPECTED RESULT: The video should play fullscreen.

ACTUAL RESULT: In a release build, the page will go gray. In a debug build, Fennec dies from fatal assert in nsLayoutUtils::InflationMinFontSizeFor():

   // Check that neither this frame nor any of its ancestors are
   // currently being reflowed.
   // It's ok for box frames (but not arbitrary ancestors of box frames)
   // since they set their size before reflow.
###!!! ABORT: must call nsHTMLReflowState& version during reflow: '!(f->GetStateBits() & NS_FRAME_IN_REFLOW)', file /Users/cpeterson/Code/mozilla/birch/layout/base/nsLayoutUtils.cpp, line 4692

* dbaron says:
I presume that the problem is that the nearest XUL frame is in a native anonymous subtree and therefore IsContainerForFontSizeInflation is returning false.
Probably I should:
(1) just change IsContainerForFontSizeInflation for that case
(2) change nsLayoutUtils::InflationMinFontSizeFor(const nsHTMLReflowState&) so that it asserts for this case even when inflation is turned off
Comment 1 David Baron :dbaron: ⌚️UTC-7 (review requests must explain patch) 2011-12-12 16:22:51 PST
Created attachment 581086 [details] [diff] [review]
patch
Comment 2 Boris Zbarsky [:bz] 2011-12-13 22:04:32 PST
Comment on attachment 581086 [details] [diff] [review]
patch

>+                        // ugly exception, but ok because the child should be

Could we actually assert that?  So

  (f->GetType() == nsGkAtoms::scrollFrame &&
   IsContainerForFontSizeInflation(f->GetScrollFrame())

(probably with a relevant do_QueryFrame on f or something).

r=me.
Comment 3 David Baron :dbaron: ⌚️UTC-7 (review requests must explain patch) 2011-12-19 13:26:39 PST
It turns out it's actually not true, because the whole thing could be inside native-anonymous content, e.g., inside of an input.  And we really need nothing to be a container in that case -- but it's also safe in the is-a-reflow-root case.

I bet I can revise the assertion to incorporate an NS_FRAME_IN_REFLOW check on the parent of the top of the reflow state chain.
Comment 4 Chris Peterson [:cpeterson] 2011-12-22 13:25:29 PST
*** Bug 713009 has been marked as a duplicate of this bug. ***
Comment 5 David Baron :dbaron: ⌚️UTC-7 (review requests must explain patch) 2011-12-28 08:20:30 PST
https://hg.mozilla.org/integration/mozilla-inbound/rev/c248c37f9cf7
Comment 6 Marco Bonardo [::mak] 2011-12-29 03:22:59 PST
https://hg.mozilla.org/mozilla-central/rev/c248c37f9cf7

Note You need to log in before you can comment on or make changes to this bug.