Closed Bug 1363880 Opened 8 years ago Closed 8 years ago

stylo: panicked at 'Animation restyle hints should not appear with non-animation restyle hints'

Categories

(Core :: CSS Parsing and Computation, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox55 --- fixed

People

(Reporter: hiro, Assigned: hiro)

References

(Blocks 1 open bug)

Details

Attachments

(3 files)

When I run layout/reftests/svg/smil/style/anim-css-color-1-to-ident-hex.svg, I got below assertion: panicked at 'Animation restyle hints should not appear with non-animation restyle hints', /home/ikezoe/central/servo/ports/geckolib/glue.rs:1867 Unfortunately we still post eRestyle_StyleAttribute and eRestyle_StyleAttribute_Animations in Element::SetSMILOverrideStyleDeclaration [1]. A call stack: #6 0x00007fffe89006c9 in std::panicking::begin_panic<&str> (msg=..., file_line=0x7fffed361a80 <geckoservo::glue::Servo_NoteExplicitHints::_FILE_LINE::h5ea713bf17d76bd0>) at /checkout/src/libstd/panicking.rs:511 #7 0x00007fffe89b254a in geckoservo::glue::Servo_NoteExplicitHints (element=0x7fffbcff1040, restyle_hint=..., change_hint=...) at /home/ikezoe/stylo/servo/ports/geckolib/glue.rs:1859 #8 0x00007fffe5517fe1 in mozilla::ServoRestyleManager::PostRestyleEvent (this=0x7fffb9f40b20, aElement=0x7fffbcff1040, aRestyleHint=192, aMinChangeHint=nsChangeHint_Empty) at /home/ikezoe/stylo/layout/base/ServoRestyleManager.cpp:62 #9 0x00007fffe5473ff9 in mozilla::RestyleManager::PostRestyleEvent (this=0x7fffb9f40b20, aElement=0x7fffbcff1040, aRestyleHint=192, aMinChangeHint=nsChangeHint_Empty) at /home/ikezoe/stylo/obj-firefox/dist/include/mozilla/RestyleManagerInlines.h:24 #10 0x00007fffe54f235c in nsIPresShell::RestyleForAnimation (this=0x7fffb5390800, aElement=0x7fffbcff1040, aHint=192) at /home/ikezoe/stylo/layout/base/PresShell.cpp:2975 #11 0x00007fffe2fd2c90 in mozilla::dom::Element::SetSMILOverrideStyleDeclaration (this=0x7fffbcff1040, aDeclaration=0x7fffbaa8dbc0, aNotify=true) at /home/ikezoe/stylo/dom/base/Element.cpp:1965 #12 0x00007fffe53edd6b in nsDOMCSSAttributeDeclaration::SetCSSDeclaration (this=0x7fffb9f36540, aDecl=0x7fffbaa8dbc0) at /home/ikezoe/stylo/layout/style/nsDOMCSSAttrDeclaration.cpp:78 #13 0x00007fffe53f1624 in nsDOMCSSDeclaration::ModifyDeclaration<nsDOMCSSDeclaration::ParsePropertyValue(nsCSSPropertyID, const nsAString&, bool)::<lambda(mozilla::css::Declaration*, nsDOMCSSDeclaration::CSSParsingEnvironment&, bool*)>, nsDOMCSSDeclaration::ParsePropertyValue(nsCSSPropertyID, const nsAString&, bool)::<lambda(mozilla::ServoDeclarationBlock*, mozilla::URLExtraData*)> >(nsDOMCSSDeclaration::<lambda(mozilla::css::Declaration*, nsDOMCSSDeclaration::CSSParsingEnvironment&, bool*)>, nsDOMCSSDeclaration::<lambda(mozilla::ServoDeclarationBlock*, mozilla::URLExtraData*)>) (this=0x7fffb9f36540, aGeckoFunc=..., aServoFunc=...) at /home/ikezoe/stylo/layout/style/nsDOMCSSDeclaration.cpp:337 #14 0x00007fffe53ef1bc in nsDOMCSSDeclaration::ParsePropertyValue (this=0x7fffb9f36540, aPropID=eCSSProperty_color, aPropValue=..., aIsImportant=false) at /home/ikezoe/stylo/layout/style/nsDOMCSSDeclaration.cpp:356 #15 0x00007fffe53ee660 in nsDOMCSSDeclaration::SetPropertyValue (this=0x7fffb9f36540, aPropID=eCSSProperty_color, aValue=...) at /home/ikezoe/stylo/layout/style/nsDOMCSSDeclaration.cpp:92 #16 0x00007fffe53ee352 in nsDOMCSSAttributeDeclaration::SetPropertyValue (this=0x7fffb9f36540, aPropID=eCSSProperty_color, aValue=...) at /home/ikezoe/stylo/layout/style/nsDOMCSSAttrDeclaration.cpp:219 #17 0x00007fffe4e09f26 in nsSMILCSSProperty::SetAnimValue (this=0x7fffbaa8db60, aValue=...) at /home/ikezoe/stylo/dom/smil/nsSMILCSSProperty.cpp:131 #18 0x00007fffe4e0c5ee in nsSMILCompositor::ComposeAttribute (this=0x7fffb7c18cc0, aMightHavePendingStyleUpdates=@0x7fffffff9950: true) at /home/ikezoe/stylo/dom/smil/nsSMILCompositor.cpp:116 #19 0x00007fffe4e05963 in nsSMILAnimationController::DoSample (this=0x7fffbd4b2880, aSkipUnchangedContainers=false) at /home/ikezoe/stylo/dom/smil/nsSMILAnimationController.cpp:455 #20 0x00007fffe4ac61d3 in nsSMILAnimationController::Resample (this=0x7fffbd4b2880) at /home/ikezoe/stylo/dom/smil/nsSMILAnimationController.h:74 #21 0x00007fffe4ac624a in nsSMILAnimationController::FlushResampleRequests (this=0x7fffbd4b2880) at /home/ikezoe/stylo/dom/smil/nsSMILAnimationController.h:90 #22 0x00007fffe4ab90fa in nsSVGElement::FlushAnimations (this=0x7fffb7cf76a0) at /home/ikezoe/stylo/dom/svg/nsSVGElement.cpp:2705 #23 0x00007fffe4a91766 in mozilla::dom::SVGSVGElement::SetCurrentTime (this=0x7fffb7cf76a0, seconds=3) at /home/ikezoe/stylo/dom/svg/SVGSVGElement.cpp:373 #24 0x00007fffe377a7a3 in mozilla::dom::SVGSVGElementBinding::setCurrentTime (cx=0x7fffd8606000, obj=..., self=0x7fffb7cf76a0, args=...) at /home/ikezoe/stylo/obj-firefox/dom/bindings/SVGSVGElementBinding.cpp:64 [1] http://searchfox.org/mozilla-central/source/dom/base/Element.cpp#1964
Assignee: nobody → hikezoe
Status: NEW → ASSIGNED
Summary: panicked at 'Animation restyle hints should not appear with non-animation restyle hints' → stylo: panicked at 'Animation restyle hints should not appear with non-animation restyle hints'
I did a try to confirm whether there are test cases that rely on eRestyle_StyleAttribute in Element::SetSMILOverrideStyleDeclaration (just dropped eRestyle_StyleAttribute there). https://treeherder.mozilla.org/#/jobs?repo=try&revision=8d9201bddb86fae84d7c03803ae261983e4b904e (A failed reftest (R13 on stylo) is a test case that is hit by this panic, I enabled it to check the panic does not happen anymore) As per this result, there is no test cases relying on the eRestyle_StyleAttribute hint. Also, as per the stack trace in comment 0, we call FlushPendingNotifications() in nsSMILAnimationController::DoSample() [1] before we reach to Element::SetSMILOverrideStyleDeclaration(). I did confirm that isStyleFlushNeeded is true on gdb. [1] https://hg.mozilla.org/mozilla-central/file/3e166b683893/dom/smil/nsSMILAnimationController.cpp#l439 Also, RestyleForAnimation() in Element::SetSMILOverrideStyleDeclaration() is only called when nsDOMCSSAttributeDeclaration::mIsSMILOverride is true. And the mIsSMILOverride is set when we call nsSMILCSSProperty::SetAnimValue() or nsSMILCSSProperty::ClearAnimValue(). nsSMILCSSProperty::SetAnimValue() is only called in nsSMILCompositor::ComposeAttribute, it's after the FlushPendingNotifications call in nsSMILAnimationController::DoSample. nsSMILCSSProperty::ClearAnimValue is called from three places. Two of them are also in nsSMILCompositor::ComposeAttribute. The final one is in nsSMILCompositor::ClearAnimationEffects, it's called from nsSMILAnimationController::DoSample() [2] but just right befor the FlushPendingNotifications call. So, a question is that there needs to post eRestyle_StyleAttribute hint when we clear SMIL animation values? Are there any cases that we can't correctly clear SMIL animated styles without eRestyle_StyleAttribute hint? From comment [3] in Element::SetSMILOverrideStyleDeclaration: // Pass both eRestyle_StyleAttribute and // eRestyle_StyleAttribute_Animations since we don't know if // this style represents only the ticking of an existing // animation or whether it's a new or changed animation. I understand there are certainly cases that we need eRestyle_StyleAttribute for *new* animation. But for removing animations? Brian, what do you think? [2] https://hg.mozilla.org/mozilla-central/file/3e166b683893/dom/smil/nsSMILAnimationController.cpp#l429 [3] https://hg.mozilla.org/mozilla-central/file/3e166b683893/dom/base/Element.cpp#l2008
Flags: needinfo?(bbirtles)
I'll have a proper look at this later this afternoon, but I suspect the following patch will be of interest: https://reviewboard.mozilla.org/r/133736/diff/1 That is, it's possible that restyle hint is in error and we should have removed it in bug 1355348 as part of the above patch but I didn't notice it then.
Oh nice, I did not notice the patch. I wait for the good news!
Oh! I didn't realize I failed to land that patch! I guess it must have happened when I split patches for landing on Servo? Or maybe MozReview ignored it? Oh dear. I'll land it later this afternoon.
Flags: needinfo?(bbirtles)
Wow! The patch has been already stamped r+ by dbaron (bug 1355348 comment 30).
(In reply to Brian Birtles (:birtles) from comment #4) > Oh! I didn't realize I failed to land that patch! I guess it must have > happened when I split patches for landing on Servo? Or maybe MozReview > ignored it? Oh dear. I'll land it later this afternoon. Note that there are a bunch of test cases that had skipped because of this panic. We should enable those skipped test as well.
(In reply to Hiroyuki Ikezoe (:hiro) from comment #6) > (In reply to Brian Birtles (:birtles) from comment #4) > > Oh! I didn't realize I failed to land that patch! I guess it must have > > happened when I split patches for landing on Servo? Or maybe MozReview > > ignored it? Oh dear. I'll land it later this afternoon. > > Note that there are a bunch of test cases that had skipped because of this > panic. We should enable those skipped test as well. Here it is. https://treeherder.mozilla.org/#/jobs?repo=try&revision=1ab29a509fe026c91b2f567881d6fdc8086f388d
Thanks. I'm just going to land that patch as-is in bug 1355348. We can re-enable the test cases in this bug or another bug.
OK, I will care of the tests.
Blocks: 1355348
No longer blocks: 1355348
Depends on: 1355348
Comment on attachment 8868004 [details] Bug 1363880 - Don't skip reftests that don't fail anymore on stylo. https://reviewboard.mozilla.org/r/139566/#review142900
Attachment #8868004 - Flags: review?(bbirtles) → review+
Comment on attachment 8868005 [details] Bug 1363880 - Enable crashtest for SVG that no longer cause panic. https://reviewboard.mozilla.org/r/139568/#review142902
Attachment #8868005 - Flags: review?(bbirtles) → review+
Comment on attachment 8868006 [details] Bug 1363880 - Annotate fails-if instead of skip-if for reftests that no longer cause panic but still fail. https://reviewboard.mozilla.org/r/139570/#review142904
Attachment #8868006 - Flags: review?(bbirtles) → review+
Thank you for doing this!
Thanks for the review! I will land these patch after this commit https://hg.mozilla.org/integration/mozilla-inbound/rev/0c8900bc3ec0 gets merged into autoland.
Comment on attachment 8868006 [details] Bug 1363880 - Annotate fails-if instead of skip-if for reftests that no longer cause panic but still fail. https://reviewboard.mozilla.org/r/139570/#review143236 ::: layout/reftests/svg/reftest.list:140 (Diff revision 1) > == dynamic-inner-svg-01.svg pass.svg > == dynamic-link-style-01.svg pass.svg > == dynamic-marker-01.svg pass.svg > == dynamic-marker-02.svg dynamic-marker-02-ref.svg > == dynamic-marker-03.svg pass.svg > -skip-if(stylo) == dynamic-mask-01.svg pass.svg > +fails-if(stylo) == dynamic-mask-01.svg pass.svg dynamic-mask-01.svg and anim-view-01.svg#view failed on a try even if we annotate as 'fails-if'. https://treeherder.mozilla.org/#/jobs?repo=try&revision=1b27e37b151b54c6237a7f6bdb813bee479ea279&selectedJob=99527829 I will leave them as skip-if for now.
Pushed by hikezoe@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f3b6085985f3 Don't skip reftests that don't fail anymore on stylo. r=birtles https://hg.mozilla.org/integration/autoland/rev/db0aa9f5cf22 Enable crashtest for SVG that no longer cause panic. r=birtles https://hg.mozilla.org/integration/autoland/rev/437489a51017 Annotate fails-if instead of skip-if for reftests that no longer cause panic but still fail. r=birtles
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: