Closed
Bug 1330824
Opened 8 years ago
Closed 8 years ago
stylo: several style system tests fatally asserts with "Assertion failure: display->mAnimationNameCount > 0 (first item must be explicit)"
Categories
(Core :: CSS Parsing and Computation, defect)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla53
Tracking | Status | |
---|---|---|
firefox53 | --- | fixed |
People
(Reporter: xidorn, Assigned: hiro)
References
Details
Attachments
(5 files)
59 bytes,
text/x-review-board-request
|
heycam
:
review+
|
Details |
59 bytes,
text/x-review-board-request
|
nika
:
review+
|
Details |
59 bytes,
text/x-review-board-request
|
heycam
:
review+
|
Details |
59 bytes,
text/x-review-board-request
|
heycam
:
review+
|
Details |
59 bytes,
text/x-review-board-request
|
heycam
:
review+
|
Details |
This is a new crash since last time. Likely related to recent animation work.
To reproduce:
./mach mochitest --disable-e10s layout/style/test/test_compute_data_with_start_struct.html
Stack:
Assertion failure: display->mAnimationNameCount > 0 (first item must be explicit), at c:/mozilla-source/stylo/layout/style/nsComputedDOMStyle.cpp:6457
#01: nsComputedDOMStyle::GetPropertyCSSValue (c:\mozilla-source\stylo\layout\style\nscomputeddomstyle.cpp:840)
#02: nsComputedDOMStyle::GetPropertyValue (c:\mozilla-source\stylo\layout\style\nscomputeddomstyle.cpp:402)
#03: mozilla::dom::CSSStyleDeclarationBinding::getPropertyValue (c:\mozilla-source\stylo\obj-firefox-stylo\dom\bindings\cssstyledeclarationbinding.cpp:165)
#04: mozilla::dom::GenericBindingMethod (c:\mozilla-source\stylo\dom\bindings\bindingutils.cpp:2914)
Reporter | ||
Comment 1•8 years ago
|
||
Hiro, it seems you are actively working on animation support for stylo, could you have a look at this crash?
Flags: needinfo?(hikezoe)
Assignee | ||
Comment 2•8 years ago
|
||
Sure, I will look into this.
Assignee | ||
Comment 3•8 years ago
|
||
It seems that we shouldn't set 0 to mAnimationNameCount in set_animation_name(). (also and other properties)
[1] https://hg.mozilla.org/incubator/stylo/file/4ed9af9b5810/servo/components/style/properties/gecko.mako.rs#l1368
Flags: needinfo?(hikezoe)
Reporter | ||
Comment 4•8 years ago
|
||
In addition to that, the following three (big) tests also crash with the same assertion:
layout/style/test/test_value_cloning.html
layout/style/test/test_value_computation.html
layout/style/test/test_value_storage.html
Summary: stylo: test_compute_data_with_start_struct.html fatally asserts with "Assertion failure: display->mAnimationNameCount > 0 (first item must be explicit)" → stylo: several style system tests fatally asserts with "Assertion failure: display->mAnimationNameCount > 0 (first item must be explicit)"
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Comment 10•8 years ago
|
||
I did include changes for mochitest.ini to clarify which test cases are fixed by the patch, but I will not include the changes when I push these patches to inbound, since it will not work until patches for servo-side has been merged.
Assignee | ||
Comment 11•8 years ago
|
||
Also note that the assertion is fixed by these patches, but the test cases still fail, since, I guess handling initial value or serialization is something wrong.
Assignee | ||
Updated•8 years ago
|
Assignee: nobody → hikezoe
Status: NEW → ASSIGNED
Reporter | ||
Comment 12•8 years ago
|
||
(In reply to Hiroyuki Ikezoe (:hiro) from comment #10)
> I did include changes for mochitest.ini to clarify which test cases are
> fixed by the patch, but I will not include the changes when I push these
> patches to inbound, since it will not work until patches for servo-side has
> been merged.
Please include the mochitest.ini change at the same time.
(In reply to Hiroyuki Ikezoe (:hiro) from comment #11)
> Also note that the assertion is fixed by these patches, but the test cases
> still fail, since, I guess handling initial value or serialization is
> something wrong.
Not crashing is enough. Thanks for fixing.
Assignee | ||
Comment 13•8 years ago
|
||
(In reply to Xidorn Quan [:xidorn] (UTC+10) from comment #12)
> (In reply to Hiroyuki Ikezoe (:hiro) from comment #10)
> > I did include changes for mochitest.ini to clarify which test cases are
> > fixed by the patch, but I will not include the changes when I push these
> > patches to inbound, since it will not work until patches for servo-side has
> > been merged.
>
> Please include the mochitest.ini change at the same time.
OK, will do.
Comment 14•8 years ago
|
||
mozreview-review |
Comment on attachment 8826463 [details]
Bug 1330824 - Use impl_copy_animation_value for animation-timing-function.
https://reviewboard.mozilla.org/r/104424/#review105068
Attachment #8826463 -
Flags: review?(cam) → review+
Comment 15•8 years ago
|
||
mozreview-review |
Comment on attachment 8826464 [details]
Bug 1330824 - Add truncate for nsAString and nsACString.
https://reviewboard.mozilla.org/r/104426/#review105074
Looks fine to me, but should get mystor to sign off on it.
::: servo/components/style/gecko_bindings/nsstring_vendor/src/lib.rs:678
(Diff revision 1)
> + pub unsafe fn truncate(&mut self) {
> + Gecko_TruncateString(self);
Nit: prefer unsafe inside the function, so that callers can call this safely.
::: xpcom/rust/nsstring/src/lib.rs:708
(Diff revision 1)
> + pub unsafe fn truncate(&mut self) {
> + Gecko_TruncateString(self);
And here.
Comment 16•8 years ago
|
||
mozreview-review |
Comment on attachment 8826465 [details]
Bug 1330824 - Add IndexMut for nsStyleAutoArray.
https://reviewboard.mozilla.org/r/104428/#review105080
Attachment #8826465 -
Flags: review?(cam) → review+
Updated•8 years ago
|
Attachment #8826464 -
Flags: review?(michael)
Comment 17•8 years ago
|
||
mozreview-review |
Comment on attachment 8826466 [details]
Bug 1330824 - Do not set mAnimationNameCount less than 1.
https://reviewboard.mozilla.org/r/104430/#review105082
::: layout/style/test/mochitest.ini:305
(Diff revision 1)
> [test_unprefixing_service.html]
> support-files = unprefixing_service_iframe.html unprefixing_service_utils.js
> [test_unprefixing_service_prefs.html]
> support-files = unprefixing_service_iframe.html unprefixing_service_utils.js
> [test_value_cloning.html]
> -skip-if = toolkit == 'android' || stylo # bug 775227 for android, bug 1330824 for stylo
> +skip-if = toolkit == 'android'# bug 775227 for android
Nit: space before "#".
Attachment #8826466 -
Flags: review?(cam) → review+
Comment 18•8 years ago
|
||
mozreview-review |
Comment on attachment 8826467 [details]
Bug 1330824 - Do not copy animation property over mAnimationXXCount.
https://reviewboard.mozilla.org/r/104432/#review105084
::: servo/components/style/properties/gecko.mako.rs:1024
(Diff revision 1)
> self.gecko.mAnimation${gecko_ffi_name}Count = other.gecko.mAnimation${gecko_ffi_name}Count;
> for (index, animation) in self.gecko.mAnimations.iter_mut().enumerate() {
> + // The length of mAnimations is often greater than mAnimationXXCount,
> + // don't copy values over the count.
> + if index >= self.gecko.mAnimation${gecko_ffi_name}Count as usize {
> + break;
> + }
> animation.m${gecko_ffi_name} = other.gecko.mAnimations[index].m${gecko_ffi_name};
> }
If you want to be a bit shorter, you can use take():
let count = other.gecko.mAnimation${gecko_ffi_name}Count;
self.gecko.mAnimation${gecko_ffi_name}Count = count;
for (index, animation) in self.gecko.mAnimations.iter_mut().enumerate().take(count) {
animation.m${gecko_ffi_name} = ...
}
Same below, too.
Attachment #8826467 -
Flags: review?(cam) → review+
Updated•8 years ago
|
Attachment #8826464 -
Flags: review?(cam)
Assignee | ||
Comment 19•8 years ago
|
||
(In reply to Cameron McCormack (:heycam) from comment #18)
> Comment on attachment 8826467 [details]
> Bug 1330824 - Do not copy animation property over mAnimationXXCount.
>
> https://reviewboard.mozilla.org/r/104432/#review105084
>
> ::: servo/components/style/properties/gecko.mako.rs:1024
> (Diff revision 1)
> > self.gecko.mAnimation${gecko_ffi_name}Count = other.gecko.mAnimation${gecko_ffi_name}Count;
> > for (index, animation) in self.gecko.mAnimations.iter_mut().enumerate() {
> > + // The length of mAnimations is often greater than mAnimationXXCount,
> > + // don't copy values over the count.
> > + if index >= self.gecko.mAnimation${gecko_ffi_name}Count as usize {
> > + break;
> > + }
> > animation.m${gecko_ffi_name} = other.gecko.mAnimations[index].m${gecko_ffi_name};
> > }
>
> If you want to be a bit shorter, you can use take():
>
> let count = other.gecko.mAnimation${gecko_ffi_name}Count;
> self.gecko.mAnimation${gecko_ffi_name}Count = count;
>
> for (index, animation) in
> self.gecko.mAnimations.iter_mut().enumerate().take(count) {
> animation.m${gecko_ffi_name} = ...
> }
Wow! I thought there must be a good way to limit iterator, but could not find it. Thanks!
Comment 20•8 years ago
|
||
mozreview-review |
Comment on attachment 8826464 [details]
Bug 1330824 - Add truncate for nsAString and nsACString.
https://reviewboard.mozilla.org/r/104426/#review105338
I'd like this to be a safe method and also avaliable on nsACString, then I'll look at it again :). Thanks!
::: servo/components/style/gecko_bindings/nsstring_vendor/src/lib.rs:679
(Diff revision 1)
> Gecko_AppendUTF8toString(self as *mut _, other as *const _);
> }
> }
> +
> + pub unsafe fn truncate(&mut self) {
> + Gecko_TruncateString(self);
Truncate should be safe to call, please rewrite this as:
pub fn truncate(&mut self) {
unsafe {
Gecko_TruncateString(self);
}
}
::: servo/components/style/gecko_bindings/nsstring_vendor/src/lib.rs:738
(Diff revision 1)
> fn Gecko_AppendCString(this: *mut nsACString, other: *const nsACString);
>
> fn Gecko_FinalizeString(this: *mut nsAString);
> fn Gecko_AssignString(this: *mut nsAString, other: *const nsAString);
> fn Gecko_AppendString(this: *mut nsAString, other: *const nsAString);
> + fn Gecko_TruncateString(this: *mut nsAString);
Please also add Gecko_TruncateCString and the corresponding truncate() methods on nsACString.
Attachment #8826464 -
Flags: review?(michael) → review-
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 26•8 years ago
|
||
mozreview-review |
Comment on attachment 8826464 [details]
Bug 1330824 - Add truncate for nsAString and nsACString.
https://reviewboard.mozilla.org/r/104426/#review105406
Looking forward to having servo in m-c so we can get rid of nsstring_vendor, but looks good to me!
Attachment #8826464 -
Flags: review?(michael) → review+
Assignee | ||
Comment 27•8 years ago
|
||
Thanks!
Servo side PR:
https://github.com/servo/servo/pull/15022
Comment 28•8 years ago
|
||
Pushed by hiikezoe@mozilla-japan.org:
https://hg.mozilla.org/integration/mozilla-inbound/rev/f9408aa59a92
Add truncate for nsAString and nsACString. r=mystor
https://hg.mozilla.org/integration/mozilla-inbound/rev/9735ab23b943
Drop skip-if from test cases that failed due to animation property handling for stylo. r=heycam
Comment 29•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/f9408aa59a92
https://hg.mozilla.org/mozilla-central/rev/9735ab23b943
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
You need to log in
before you can comment on or make changes to this bug.
Description
•