Closed
Bug 1367523
Opened 7 years ago
Closed 7 years ago
stylo: determine if clone of fontface and counter style rules create a memory leak, and re-enable layout/style/test/test_stylesheet_clone_font_face.html
Categories
(Core :: CSS Parsing and Computation, enhancement, P2)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
People
(Reporter: bradwerth, Assigned: bradwerth)
References
Details
Attachments
(3 files, 3 obsolete files)
Bug 1339629 implements deep cloning of css rules, but some uses appear to leak memory. Mochitest layout/style/test/test_stylesheet_clone_font_face.html triggers cloning of a fontface rule, and appears to leak.
Updated•7 years ago
|
Updated•7 years ago
|
Priority: -- → P2
Assignee | ||
Updated•7 years ago
|
Summary: stylo: determine if clone of fontface rules creates a real memory leak, and re-enable layout/style/test/test_stylesheet_clone_font_face.html → stylo: determine if clone of fontface and counter style rules create a memory leak, and re-enable layout/style/test/test_stylesheet_clone_font_face.html
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Updated•7 years ago
|
Attachment #8874570 -
Attachment is obsolete: true
Assignee | ||
Updated•7 years ago
|
Attachment #8874524 -
Flags: review?(cam)
Attachment #8874525 -
Flags: review?(cam)
Attachment #8874526 -
Flags: review?(cam)
Attachment #8874527 -
Flags: review?(cam)
Comment 14•7 years ago
|
||
mozreview-review |
Comment on attachment 8874524 [details]
Bug 1367523 Part 1: Servo-side define and call Gecko CounterStyle and FontFaceRule clone functions.
https://reviewboard.mozilla.org/r/145514/#review150512
::: servo/components/style/stylesheets/mod.rs:291
(Diff revision 3)
> let rule = arc.read_with(guard);
> CssRule::Media(Arc::new(
> lock.wrap(rule.deep_clone_with_lock(lock, guard))))
> },
> CssRule::FontFace(ref arc) => {
> - let rule = arc.read_with(guard);
> + let rule = arc.read_with(&guard);
Why do we need this "&"?
::: servo/components/style/stylesheets/mod.rs:296
(Diff revision 3)
> - let rule = arc.read_with(guard);
> - CssRule::FontFace(Arc::new(lock.wrap(rule.clone())))
> + let rule = arc.read_with(&guard);
> + CssRule::FontFace(Arc::new(lock.wrap(
> + rule.deep_clone_from_gecko())))
> },
> CssRule::CounterStyle(ref arc) => {
> - let rule = arc.read_with(guard);
> + let rule = arc.read_with(&guard);
...and here?
Attachment #8874524 -
Flags: review?(cam) → review+
Comment 15•7 years ago
|
||
mozreview-review |
Comment on attachment 8874525 [details]
Bug 1367523 Part 2: Gecko-side implement the CounterStyle and FontFaceRule clone functions.
https://reviewboard.mozilla.org/r/145516/#review150514
Attachment #8874525 -
Flags: review?(cam) → review+
Comment 16•7 years ago
|
||
mozreview-review |
Comment on attachment 8874526 [details]
Bug 1367523 Part 3: Re-enable layout/style/test/test_stylesheet_clone_font_face.html.
https://reviewboard.mozilla.org/r/145892/#review150516
Attachment #8874526 -
Flags: review?(cam) → review+
Comment 17•7 years ago
|
||
mozreview-review |
Comment on attachment 8874527 [details]
Bug 1367523 Part 4: Update the layout/reftests/stylesheet-cloning/counter-style-rule-clone.html test to use correct unicode literals.
https://reviewboard.mozilla.org/r/145894/#review150520
Is there a problem with the non-ASCII values?
Attachment #8874527 -
Flags: review?(cam) → review+
Assignee | ||
Comment 18•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8874527 [details]
Bug 1367523 Part 4: Update the layout/reftests/stylesheet-cloning/counter-style-rule-clone.html test to use correct unicode literals.
https://reviewboard.mozilla.org/r/145894/#review150520
Yes, strangely, setting the symbols property to a string that contains unicode characters doesn't "stick". I'll search for an existing bug and file one if necessary.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Updated•7 years ago
|
Attachment #8875512 -
Flags: review?(cam)
Comment hidden (mozreview-request) |
Assignee | ||
Comment 28•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8874527 [details]
Bug 1367523 Part 4: Update the layout/reftests/stylesheet-cloning/counter-style-rule-clone.html test to use correct unicode literals.
https://reviewboard.mozilla.org/r/145894/#review150520
Nevermind; I was using incorrect unicode literals -- correct for CSS, wrong for JS.
Comment 29•7 years ago
|
||
mozreview-review |
Comment on attachment 8875512 [details]
Bug 1367523 Part 1b: Servo-side make cloning of FontFaceRule and CounterStyleRule compile for both servo and gecko configs.
https://reviewboard.mozilla.org/r/146938/#review151056
::: servo/components/style/stylesheets/mod.rs:293
(Diff revision 1)
> - if cfg!(feature = "gecko") {
> + rule.clone_conditionally_gecko_or_servo())))
> - rule.deep_clone_from_gecko()
> - } else {
> - rule.clone()
> - })))
This change is fine. But FWIW you can do real conditional compilation on expression blocks, like this, if you wanted to keep the switching behaviour in here:
CSSRule::FontFace(Arc::new(lock.wrap(
#[cfg(feature = "gecko")]
{
rule.deep_clone_from_gecko()
}
#[cfg(not(feature = "gecko"))]
{
rule.clone()
}
)))
Attachment #8875512 -
Flags: review?(cam) → review+
Assignee | ||
Comment 30•7 years ago
|
||
mozreview-review |
Comment on attachment 8875512 [details]
Bug 1367523 Part 1b: Servo-side make cloning of FontFaceRule and CounterStyleRule compile for both servo and gecko configs.
https://reviewboard.mozilla.org/r/146938/#review151374
::: servo/components/style/stylesheets/mod.rs:293
(Diff revision 1)
> - if cfg!(feature = "gecko") {
> + rule.clone_conditionally_gecko_or_servo())))
> - rule.deep_clone_from_gecko()
> - } else {
> - rule.clone()
> - })))
Rust compiler choked on that, not happy to find another # directive after the first block. I wasn't able to find a way to fight through it, so I'm keeping the proposed method.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Updated•7 years ago
|
Attachment #8874524 -
Attachment is obsolete: true
Assignee | ||
Updated•7 years ago
|
Attachment #8875512 -
Attachment is obsolete: true
Comment 34•7 years ago
|
||
Pushed by bwerth@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f0ce0e021b87
Part 2: Gecko-side implement the CounterStyle and FontFaceRule clone functions. r=heycam
https://hg.mozilla.org/integration/autoland/rev/2d26be0ac13f
Part 3: Re-enable layout/style/test/test_stylesheet_clone_font_face.html. r=heycam
https://hg.mozilla.org/integration/autoland/rev/30a798334757
Part 4: Update the layout/reftests/stylesheet-cloning/counter-style-rule-clone.html test to use correct unicode literals. r=heycam
Assignee | ||
Comment 35•7 years ago
|
||
Landed in mozilla-central:
changeset: 363082:30a798334757
user: Brad Werth <bwerth@mozilla.com>
date: Mon Jun 05 11:59:24 2017 -0700
summary: Bug 1367523 Part 4: Update the layout/reftests/stylesheet-cloning/counter-style-rule-clone.html test to use correct unicode literals. r=heycam
changeset: 363081:2d26be0ac13f
user: Brad Werth <bwerth@mozilla.com>
date: Tue May 30 17:55:42 2017 -0700
summary: Bug 1367523 Part 3: Re-enable layout/style/test/test_stylesheet_clone_font_face.html. r=heycam
changeset: 363080:f0ce0e021b87
user: Brad Werth <bwerth@mozilla.com>
date: Mon May 22 17:21:09 2017 -0700
summary: Bug 1367523 Part 2: Gecko-side implement the CounterStyle and FontFaceRule clone functions. r=heycam
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•