Closed Bug 1393189 Opened 7 years ago Closed 7 years ago

stylo: Assertion failure: IsResolved()

Categories

(Core :: CSS Parsing and Computation, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla57
Tracking Status
firefox-esr52 --- unaffected
firefox55 --- unaffected
firefox56 --- unaffected
firefox57 --- fixed

People

(Reporter: truber, Assigned: xidorn)

References

(Blocks 2 open bugs)

Details

(Keywords: assertion, testcase)

Attachments

(8 files)

Attached file testcase.html (deleted) —
The attached testcase causes an assertion in m-c rev 20170823-c86b7150523c with stylo enabled by pref. Assertion failure: IsResolved(), at /home/worker/workspace/build/src/layout/style/CounterStyleManager.h:244 #0: mozilla::CounterStylePtr::Get, at layout/style/CounterStyleManager.h:244 #1: Gecko_CounterStyle_IsSingleString, at layout/style/CounterStyleManager.h:230 #2: style::gecko_bindings::structs::root::mozilla::GeckoList::clone_list_style_type, at out/gecko_properties.rs:15365 #3: style::properties::animated_properties::AnimationValue::from_computed_values, at out/properties.rs:84808 #4: geckoservo::glue::Servo_ComputedValues_ExtractAnimationValue, at servo/ports/geckolib/glue.rs:742 #5: mozilla::dom::KeyframeEffectReadOnly::EnsureBaseStyle, at dom/animation/KeyframeEffectReadOnly.cpp:566 #6: mozilla::dom::KeyframeEffectReadOnly::EnsureBaseStyles, at dom/animation/KeyframeEffectReadOnly.cpp:530 #7: mozilla::dom::KeyframeEffectReadOnly::DoUpdateProperties<const mozilla::ServoStyleContext>, at dom/animation/KeyframeEffectReadOnly.cpp:343 #8: mozilla::dom::KeyframeEffectReadOnly::DoSetKeyframes<const mozilla::ServoStyleContext>, at dom/animation/KeyframeEffectReadOnly.cpp:321 #9: nsAnimationManager::DoUpdateAnimations<ServoCSSAnimationBuilder>, at layout/style/nsAnimationManager.cpp:428 #10: nsAnimationManager::UpdateAnimations, at layout/style/nsAnimationManager.cpp:1040 #11: Gecko_UpdateAnimations, at layout/style/ServoBindings.cpp:673 #12: style::gecko::wrapper::{{impl}}::update_animations, at servo/components/style/gecko/wrapper.rs:1246 #13: style::context::SequentialTask<style::gecko::wrapper::GeckoElement>::execute<style::gecko::wrapper::GeckoElement>, at servo/components/style/context.rs:481 #14: style::context::{{impl}}::drop<style::gecko::wrapper::GeckoElement>, at servo/components/style/context.rs:601 #15: core::ptr::drop_in_place<style::context::SequentialTaskList<style::gecko::wrapper::GeckoElement>>, at src/libcore/ptr.rs:60 #16: core::ptr::drop_in_place<style::context::ThreadLocalStyleContext<style::gecko::wrapper::GeckoElement>>, at src/libcore/ptr.rs:60 #17: core::ptr::drop_in_place<[core::cell::RefCell<core::option::Option<style::context::ThreadLocalStyleContext<style::gecko::wrapper::GeckoElement>>>]>, at src/libcore/ptr.rs:60 #18: core::ptr::drop_in_place<alloc::boxed::Box<[core::cell::RefCell<core::option::Option<style::context::ThreadLocalStyleContext<style::gecko::wrapper::GeckoElement>>>]>>, at src/libcore/ptr.rs:60 #19: style::parallel::traverse_dom<style::gecko::wrapper::GeckoElement,style::gecko::traversal::RecalcStyleOnly>, at servo/components/style/parallel.rs:104 #20: geckoservo::glue::traverse_subtree, at servo/ports/geckolib/glue.rs:250 #21: geckoservo::glue::Servo_TraverseSubtree, at servo/ports/geckolib/glue.rs:290 #22: mozilla::ServoStyleSet::StyleDocument, at layout/style/ServoStyleSet.cpp:893 #23: nsCSSFrameConstructor::ConstructDocElementFrame, at layout/base/nsCSSFrameConstructor.cpp:2558 #24: nsCSSFrameConstructor::ContentRangeInserted, at layout/base/nsCSSFrameConstructor.cpp:8121 #25: nsCSSFrameConstructor::ContentInserted, at layout/base/nsCSSFrameConstructor.h:283 #26: mozilla::PresShell::Initialize, at layout/base/PresShell.cpp:1809
Flags: in-testsuite?
I think we're using P1 for fatal asserts? If not, please feel free to re-prioritize.
Assignee: nobody → dakatsuka
Status: NEW → ASSIGNED
Priority: -- → P1
Priority: P1 → P2
Assignee: dakatsuka → xidorn+moz
Note that Cam had a patch to fix it already IIRC
emilio told me that heycam's patch in bug 1394297 should fix this bug. I'd still like to use this bug for refactoring how CounterStyleOrNone::from_gecko_value is implemented for a bit, though.
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 ::: commit-message-0a7b4:1 (Diff revision 1) > +Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. r?dholbert > + Could you include an extra few lines here with a little more motivation/explanation of what you're doing here? ::: dom/base/nsGkAtomList.h:405 (Diff revision 1) > GK_ATOM(DOMSubtreeModified, "DOMSubtreeModified") > GK_ATOM(double_, "double") > +GK_ATOM(disclosure_closed, "disclosure-closed") > +GK_ATOM(disclosure_open, "disclosure-open") > GK_ATOM(drag, "drag") These new lines aren't quite in the correct sorted position -- they want to be one line up (since "di" sorts before "do") ::: dom/base/nsGkAtomList.h:593 (Diff revision 1) > GK_ATOM(itemtype, "itemtype") > +GK_ATOM(japanese_informal, "japanese-informal") > +GK_ATOM(japanese_formal, "japanese-formal") > GK_ATOM(kbd, "kbd") These are in the wrong sorted order. "f" is before "i" in the alphabet, so "japanese-formal" should be sorted before "japanese-informal". Same goes for every other "informal"/"formal" pair in this patch -- there are three others, I think (korean-hanja-*, simp-chinese-*, trad-chinese-*) ::: layout/style/BuiltinCounterStyleList.h:7 (Diff revision 1) > +/* a list of all builtin counter styles */ > + > +// none and decimal are not redefinable, so they should not be moved. > +BUILTIN_COUNTER_STYLE(NONE, none) > +BUILTIN_COUNTER_STYLE(DECIMAL, decimal) > +// the following graphic styles are processed in a different way. > +BUILTIN_COUNTER_STYLE(DISC, disc) > +BUILTIN_COUNTER_STYLE(CIRCLE, circle) > +BUILTIN_COUNTER_STYLE(SQUARE, square) > +BUILTIN_COUNTER_STYLE(DISCLOSURE_CLOSED, disclosure_closed) Could you include a comment to indicate what the args represent, so this list is less magical? (Like we do in e.g. the similar-but-larger nsCSSPropList.h file.) Maybe something like: // Notes on BUILTIN_COUNTER_STYLE args: // 1st arg is a label that we can use in names of #define'd constants. // 2nd arg is the nsGkAtoms field that represents the counter style's name. ::: layout/style/BuiltinCounterStyleList.h:9 (Diff revision 1) > +// none and decimal are not redefinable, so they should not be moved. > +BUILTIN_COUNTER_STYLE(NONE, none) > +BUILTIN_COUNTER_STYLE(DECIMAL, decimal) > +// the following graphic styles are processed in a different way. > +BUILTIN_COUNTER_STYLE(DISC, disc) What does "should not be moved" mean here? ("moved" how/where? Do you mean they can't be reordered to somewhere else in this list, i.e. they need to be first?) Please clarify the wording here to be clearer. ::: layout/style/CounterStyleManager.h:100 (Diff revision 1) > protected: > int32_t mStyle; Please add 'const' here: const int32_t mStyle; ...for good measure (while you make its getter 'constexpr' -- I think that helps prove that the getter's value really can be determined at compile-time. Or, even if it doesn't, it's good practice anyway, as long as this member-var isn't expected to change. :)) ::: layout/style/CounterStyleManager.cpp:614 (Diff revision 1) > + // The atom for the name of the builtin counter style. > + // Extra indirection to point to nsGkAtoms members. > + nsIAtom** mName; (1) Please declare this as 'nsIAtom** const' to indicate/validate that it's set in the init list and never changes. (2) I didn't initially understand what the comment here meant, & why this needs to be a double-pointer. Can you reword/extend this to clarify? "To point to nsGkAtoms" members is not really clear -- superficially, it seems like this could be simplified to a nsIAtom*. (After some testing of me making that change: I think it's a double-pointer because we want to allow instances of this class to be instantiated by the compiler at compile-time, e.g. for the static_assert elsewhere in this patch, but we can't do that if this were a nsIAtom* whose value came from a "nsGkAtoms::foo" value, because nsGkAtoms::foo values are not themselves 'constexpr'. But we can use their address within the nsGkAtoms table -- that can be computed at compile time. So -- I think I understand now, but only after modifying the code manually to try to make this a single-pointer and seeing how things broke.) ::: layout/style/nsStyleConsts.h:792 (Diff revision 1) > -#define NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL 12 > -#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL 13 > -#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL 14 > -#define NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC 15 > -#define NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED 16 > -#define NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN 17 > +#define NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL 12 > +#define NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL 13 > +#define NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL 14 > +#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL 15 > +#define NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL 16 > +#define NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC 17 > -#define NS_STYLE_LIST_STYLE__MAX 18 > // These styles are handled as custom styles defined in counterstyles.css. It looks like this section is just a reordering/renumbering (plus the removal of the now-unneeded __MAX value). Would it make sense to split the reordering/renumbering into a "part 0" patch here? (if it's a necessary-but-independent change from the rest of this patch)
Attachment #8902196 - Flags: review?(dholbert) → review-
Comment on attachment 8902197 [details] Bug 1393189 part 2 - Have CounterStyle::GetStyleName return nsIAtom and make it const. https://reviewboard.mozilla.org/r/173588/#review179254
Attachment #8902197 - Flags: review?(dholbert) → review+
Comment on attachment 8902198 [details] Bug 1393189 part 3 - Replace all uses of nsCSSProps::kListStyleKTable with gBuiltinStyleTable. https://reviewboard.mozilla.org/r/173590/#review179256 ::: layout/style/CounterStyleManager.cpp:2042 (Diff revision 1) > } else { > - int32_t type; > - nsDependentAtomString name(aName); > - nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(name); > - if (nsCSSProps::FindKeyword(keyword, nsCSSProps::kListStyleKTable, type)) { > - if (gBuiltinStyleTable[type].IsDependentStyle()) { > - data = new (mPresContext) DependentBuiltinCounterStyle(type, this); > - } else { > + for (const BuiltinCounterStyle& item : gBuiltinStyleTable) { > + if (item.GetStyleName() == aName) { > + int32_t style = item.GetStyle(); > + data = item.IsDependentStyle() > + ? new (mPresContext) DependentBuiltinCounterStyle(style, this) > + : GetBuiltinStyle(style); > + break; There's a comment above this section about how we're doing a case-insensitive comparison here. (I think it was case-insensitive due to the nsCSSKeywords::LookupKeyword usage here -- since nsCSSKeywords uses a "nsStaticCaseInsensitiveNameTable" under the hood.) Is the new code still doing a case-insensitive comparison somehow, or is this patch accidentally converting it to be case-sensitive? (It looks like it's an exact case-sensitive comparison, because it's checking for nsIAtom pointer-equality now.) So I think this might be wrong & need some fixing. If I'm mistaken, though, then please make sure it's clear (via a comment) how this is still doing the right sort of comparison. ::: layout/style/nsRuleNode.cpp:8112 (Diff revision 1) > break; > default: > - name = NS_Atomize(nsCSSProps::ValueToKeyword( > + name = CounterStyleManager::GetStyleNameFromType(intValue); > - intValue, nsCSSProps::kListStyleKTable)); What sort of assurance do we have here that |intValue| is in the correct range of builtin values? (and that it won't trigger an out-of-bounds read in the function that we're calling now) The old code (using nsCSSProps::ValueToKeyword) would handle this case gracefully-ish by producing the empty string, but now we'll do an out-of-bounds read (and fail an assertion in debug builds). So we need to reassure ourselves that such out-of-bounds values aren't possible here, now that the possibility is getting more dangerous. So: please include a comment here to explain how we know it's in-range (ideally mentioning whatever nsCSSParser function, etc., that gives us that guarantee)
Attachment #8902198 - Flags: review?(dholbert) → review-
Comment on attachment 8902199 [details] Bug 1393189 part 4 - Remove kListStyleKTable and CSS keywords only used in this table. https://reviewboard.mozilla.org/r/173592/#review179268
Attachment #8902199 - Flags: review?(dholbert) → review+
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 > (1) Please declare this as 'nsIAtom** const' to indicate/validate that it's set in the init list and never changes. > > (2) I didn't initially understand what the comment here meant, & why this needs to be a double-pointer. Can you reword/extend this to clarify? "To point to nsGkAtoms" members is not really clear -- superficially, it seems like this could be simplified to a nsIAtom*. > > (After some testing of me making that change: I think it's a double-pointer because we want to allow instances of this class to be instantiated by the compiler at compile-time, e.g. for the static_assert elsewhere in this patch, but we can't do that if this were a nsIAtom* whose value came from a "nsGkAtoms::foo" value, because nsGkAtoms::foo values are not themselves 'constexpr'. But we can use their address within the nsGkAtoms table -- that can be computed at compile time. So -- I think I understand now, but only after modifying the code manually to try to make this a single-pointer and seeing how things broke.) I have a feeling that this is a usual pattern to use `nsIAtom**` and `&nsGkAtoms::` for statically initialized data. See for example nsMediaFeature [1] and many others if you search `&nsGkAtoms::` in our codebase [2], so I don't really think it's worth more explanation. We need to use `&nsGkAtoms::` because value of items in `nsGkAtoms` are initialized at runtime. That is because we need to deduplicate when creating those static atoms, and we can only do that at runtime. See the static atom register code [3] for more details. (We can probably try to do them at build time via some script, I guess.) [1] https://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/layout/style/nsMediaFeatures.h#25 [2] https://searchfox.org/mozilla-central/search?q=%26nsGkAtoms%3A%3A [3] https://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/xpcom/ds/nsAtomTable.cpp#660
Comment on attachment 8902198 [details] Bug 1393189 part 3 - Replace all uses of nsCSSProps::kListStyleKTable with gBuiltinStyleTable. https://reviewboard.mozilla.org/r/173590/#review179256 > There's a comment above this section about how we're doing a case-insensitive comparison here. (I think it was case-insensitive due to the nsCSSKeywords::LookupKeyword usage here -- since nsCSSKeywords uses a "nsStaticCaseInsensitiveNameTable" under the hood.) > > > Is the new code still doing a case-insensitive comparison somehow, or is this patch accidentally converting it to be case-sensitive? (It looks like it's an exact case-sensitive comparison, because it's checking for nsIAtom pointer-equality now.) > > So I think this might be wrong & need some fixing. If I'm mistaken, though, then please make sure it's clear (via a comment) how this is still doing the right sort of comparison. This is because the parser should lowercase all name of predefined counter styles (including all builtin ones). I don't think it's worth a code comment itself because lowercasing predefined counter style itself is a higher level requirement from the spec, and not just for builtin ones here (but also other predefined non-builtin ones). But I would put the justification into the commit message for this change. > What sort of assurance do we have here that |intValue| is in the correct range of builtin values? (and that it won't trigger an out-of-bounds read in the function that we're calling now) The old code (using nsCSSProps::ValueToKeyword) would handle this case gracefully-ish by producing the empty string, but now we'll do an out-of-bounds read (and fail an assertion in debug builds). So we need to reassure ourselves that such out-of-bounds values aren't possible here, now that the possibility is getting more dangerous. > > So: please include a comment here to explain how we know it's in-range (ideally mentioning whatever nsCSSParser function, etc., that gives us that guarantee) Actually there is a comment before this whole switch block stating that the value never comes from CSS, they are from attribute map. I'll add some reference in that comment for where the values can come from.
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 > I have a feeling that this is a usual pattern to use `nsIAtom**` and `&nsGkAtoms::` for statically initialized data. See for example nsMediaFeature [1] and many others if you search `&nsGkAtoms::` in our codebase [2], so I don't really think it's worth more explanation. > > We need to use `&nsGkAtoms::` because value of items in `nsGkAtoms` are initialized at runtime. That is because we need to deduplicate when creating those static atoms, and we can only do that at runtime. See the static atom register code [3] for more details. (We can probably try to do them at build time via some script, I guess.) > > [1] https://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/layout/style/nsMediaFeatures.h#25 > [2] https://searchfox.org/mozilla-central/search?q=%26nsGkAtoms%3A%3A > [3] https://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/xpcom/ds/nsAtomTable.cpp#660 > I don't really think it's worth more explanation. I disagree. My concern is that the current documentation implies that you always need a double-pointer in order to point to a nsGkAtom member. And that's simply not true -- and hence, it is confusing. Could you just expand this a little, maybe to something like: // Extra indirection to point to nsGkAtoms members (whose nsIAtom* // pointer-values are determined at runtime -- hence we can't capture them // as nsIAtom* and still be constructed as 'constexpr')
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 > > I don't really think it's worth more explanation. > > I disagree. My concern is that the current documentation implies that you always need a double-pointer in order to point to a nsGkAtom member. And that's simply not true -- and hence, it is confusing. > > Could you just expand this a little, maybe to something like: > // Extra indirection to point to nsGkAtoms members (whose nsIAtom* > // pointer-values are determined at runtime -- hence we can't capture them > // as nsIAtom* and still be constructed as 'constexpr') It's true that you always need a double-pointer in order to point to a member of `nsGkAtoms`, because those members themselves are `nsIAtom*` :)
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 > It's true that you always need a double-pointer in order to point to a member of `nsGkAtoms`, because those members themselves are `nsIAtom*` :) ehh... *strictly* true I suppose. :) But still quite ambiguous to a human reader. (supposing foo->mPresShell is a pointer, and I said "This variable points to foo->mPresShell", a reader could easily [mis]understand me to be discussing a single-pointer rather than a double-pointer.)
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179210 > ehh... *strictly* true I suppose. :) But still quite ambiguous to a human reader. > > > (supposing foo->mPresShell is a pointer, and I said "This variable points to foo->mPresShell", a reader could easily [mis]understand me to be discussing a single-pointer rather than a double-pointer.) Well, when you are saying you need to point to a member, it clearly means you need a pointer to the member, not the object behind, and in this case, when the member itself has a pointer type, we need a double-pointer to point to it, otherwise you should use a different expression (e.g. "this variable points to the same pres shell as foo->mPresShell, rather than "this variable points to mPresShell member of foo"). So I don't think this is that confusing.
Comment on attachment 8902488 [details] Bug 1393189 part 0 - Reorder NS_STYLE_LIST_STYLE_* consts to match the order in nsCSSProps::kListStyleKTable. https://reviewboard.mozilla.org/r/174072/#review179336
Attachment #8902488 - Flags: review?(dholbert) → review+
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review179338 ::: layout/style/CounterStyleManager.cpp:615 (Diff revisions 1 - 2) > // Extra indirection to point to nsGkAtoms members. > - nsIAtom** mName; > + nsIAtom** const mName; I still think an extra parenthetical comment here would be helpful to clarify the motivation, to clue the reader into the fact that (a) this class's instances are intended to be evaluated at compile-time, (b) nsGkAtoms:: pointer-values are determined at runtime, (c) therefore we need an extra layer of indirection. (Each of these facts is available somewhere in the codebase, but not together and not very close to this line, which is why this reasoning is non-obvious.) I guess I won't tick "open an issue" because I don't want to hold the review on this, but I'd still encourage you to add some sort of helpful comment like this.
Attachment #8902196 - Flags: review?(dholbert) → review+
Attachment #8902201 - Flags: review?(cam) → review+
Comment on attachment 8902200 [details] Bug 1393189 part 5 - Rewrite CounterStyleOrNone::from_gecko_value to use fewer binding functions. https://reviewboard.mozilla.org/r/173594/#review179342 ::: servo/components/style/gecko/values.rs:480 (Diff revision 2) > symbols.as_ptr(), symbols.len() as u32) }; > } > } > } > > /// Convert Gecko CounterStylePtr to CounterStyleOrNone. Update this comment now that we can return a String too?
Attachment #8902200 - Flags: review?(cam) → review+
Comment on attachment 8902198 [details] Bug 1393189 part 3 - Replace all uses of nsCSSProps::kListStyleKTable with gBuiltinStyleTable. https://reviewboard.mozilla.org/r/173590/#review179344 ::: layout/style/CounterStyleManager.cpp:2035 (Diff revision 2) > // It is intentional that the predefined names are case-insensitive > // but the user-defined names case-sensitive. > StyleSetHandle styleSet = mPresContext->StyleSet(); > nsCSSCounterStyleRule* rule = styleSet->CounterStyleRuleForName(aName); > if (rule) { > MOZ_ASSERT(rule->Name() == aName); > data = new (mPresContext) CustomCounterStyle(aName, this, rule); > } else { > - int32_t type; > - nsDependentAtomString name(aName); > + for (const BuiltinCounterStyle& item : gBuiltinStyleTable) { > + if (item.GetStyleName() == aName) { Thanks for adding the explanation in the commit message! This preexisting code-comment is becoming confusing, though. Could you also update this code-comment to keep it correct? It becomes stale/misleading as of this patch. (It suggests that the code that follows it will do a different sort of comparison [case-sensitivity-wise] in the two branches, but the code clearly does *not* do that. Rather, both branches are now **case-sensitive** despite what this comment says -- and we're depending on earlier code to have adjusted the case for us, elsewhere, so that the case-sensitivity simply doesn't make a difference in one of the branches.)
Attachment #8902198 - Flags: review?(dholbert) → review+
Pushed by xquan@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/7aee62c706ab part 0 - Reorder NS_STYLE_LIST_STYLE_* consts to match the order in nsCSSProps::kListStyleKTable. r=dholbert https://hg.mozilla.org/integration/autoland/rev/d292ce405097 part 1 - Statically initialize builtin style table with their name atom included. r=dholbert https://hg.mozilla.org/integration/autoland/rev/1200482baf04 part 2 - Have CounterStyle::GetStyleName return nsIAtom and make it const. r=dholbert https://hg.mozilla.org/integration/autoland/rev/986b0a6f7173 part 3 - Replace all uses of nsCSSProps::kListStyleKTable with gBuiltinStyleTable. r=dholbert https://hg.mozilla.org/integration/autoland/rev/d0cff01a73a0 part 4 - Remove kListStyleKTable and CSS keywords only used in this table. r=dholbert https://hg.mozilla.org/integration/autoland/rev/370357882bef part 5 - Rewrite CounterStyleOrNone::from_gecko_value to use fewer binding functions. r=heycam https://hg.mozilla.org/integration/autoland/rev/b0cc5205f6ed part 6 - Add crashtest for this bug. r=heycam
Backed out for crashing e.g. in chrome's devtools/client/memory/test/chrome/test_List_01.html or losing connection while running many test suites, both on Windows: servo part: https://hg.mozilla.org/integration/autoland/rev/adfc31a890bbdd1c8fbb365b8912094bf095a776 Gecko part: https://hg.mozilla.org/integration/autoland/rev/48c3b47b97ac76c353cd2390730626750283b809 https://hg.mozilla.org/integration/autoland/rev/4960488f939ec95fb8152774d0230bbce7f9d242 https://hg.mozilla.org/integration/autoland/rev/657c8ee01fcfe0a2403ec1f705fd785b988ffa1d https://hg.mozilla.org/integration/autoland/rev/095109d7ba80f68446fdb8b7b58949d5fb4fb5d4 https://hg.mozilla.org/integration/autoland/rev/381d831f79a182fcf6533482992bf63891c788ff https://hg.mozilla.org/integration/autoland/rev/e949b2b4653449fd032c0ad26d43bcc6e8499ac0 https://hg.mozilla.org/integration/autoland/rev/8d70c25e8e2236a111b46b5fddeb9faba65b7d5d Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=b0cc5205f6ed2d92ed4cbc7b6c75de2538cb6309&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=exception&filter-resultStatus=retry&filter-resultStatus=usercancel&filter-resultStatus=runnable Failure log devtools/client/memory/test/chrome/test_List_01.html: https://treeherder.mozilla.org/logviewer.html#?job_id=126979636&repo=autoland 23:41:59 INFO - TEST-START | devtools/client/memory/test/chrome/test_List_01.html 23:42:01 INFO - TEST-INFO | Main app process: exit 1 23:42:01 INFO - Buffered messages finished 23:42:01 ERROR - TEST-UNEXPECTED-FAIL | devtools/client/memory/test/chrome/test_List_01.html | application terminated with exit code 1 23:42:01 INFO - runtests.py | Application ran for: 0:00:11.977000 23:42:01 INFO - zombiecheck | Reading PID log: c:\users\cltbld~1.001\appdata\local\temp\tmpp1fdsipidlog 23:42:01 INFO - mozcrash Downloading symbols from: https://queue.taskcluster.net/v1/task/D6om9YiITCiCjAwx-41qGw/artifacts/public/build/target.crashreporter-symbols.zip 23:42:07 INFO - mozcrash Copy/paste: C:\slave\test\build\win32-minidump_stackwalk.exe c:\users\cltbld~1.001\appdata\local\temp\tmpjfkvyt.mozrunner\minidumps\514cf0d8-9c13-4a81-8116-948df53b10d9.dmp c:\users\cltbld~1.001\appdata\local\temp\tmpvrr_hb 23:42:12 INFO - mozcrash Saved minidump as C:\slave\test\build\blobber_upload_dir\514cf0d8-9c13-4a81-8116-948df53b10d9.dmp 23:42:12 INFO - mozcrash Saved app info as C:\slave\test\build\blobber_upload_dir\514cf0d8-9c13-4a81-8116-948df53b10d9.extra 23:42:12 INFO - PROCESS-CRASH | devtools/client/memory/test/chrome/test_List_01.html | application crashed [@ nsBlockFrame::SetInitialChildList(mozilla::layout::FrameChildListID,nsFrameList &)] 23:42:12 INFO - Crash dump filename: c:\users\cltbld~1.001\appdata\local\temp\tmpjfkvyt.mozrunner\minidumps\514cf0d8-9c13-4a81-8116-948df53b10d9.dmp 23:42:12 INFO - Operating system: Windows NT 23:42:12 INFO - 6.2.9200 23:42:12 INFO - CPU: amd64 23:42:12 INFO - family 6 model 30 stepping 5 23:42:12 INFO - 8 CPUs 23:42:12 INFO - 23:42:12 INFO - GPU: UNKNOWN 23:42:12 INFO - 23:42:12 INFO - Crash reason: EXCEPTION_ACCESS_VIOLATION_READ 23:42:12 INFO - Crash address: 0x20 23:42:12 INFO - Process uptime: 11 seconds 23:42:12 INFO - 23:42:12 INFO - Thread 0 (crashed) 23:42:12 INFO - 0 xul.dll!nsBlockFrame::SetInitialChildList(mozilla::layout::FrameChildListID,nsFrameList &) [nsBlockFrame.cpp:b0cc5205f6ed : 7114 + 0x9] 23:42:12 INFO - rax = 0x0000000000000000 rdx = 0x000000c32d24b4c8 23:42:12 INFO - rcx = 0x000007fa95694d80 rbx = 0x000000c32d24b400 23:42:12 INFO - rsi = 0x0000000000000000 rdi = 0x000000c32d24b760 23:42:12 INFO - rbp = 0x000000c3058aced9 rsp = 0x000000c3058acde0 23:42:12 INFO - r8 = 0x000000c32940d048 r9 = 0x0000000000400080 23:42:12 INFO - r10 = 0x0000000000000000 r11 = 0x0000000000000001 23:42:12 INFO - r12 = 0x000000c3058adc20 r13 = 0x000000c32c61f280 23:42:12 INFO - r14 = 0x000000c3058acfc0 r15 = 0x000000c32d24b760 23:42:12 INFO - rip = 0x000007fa93ec0bd4 23:42:12 INFO - Found by: given as instruction pointer in context 23:42:12 INFO - 1 xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState &,nsIContent *,nsContainerFrame *,nsContainerFrame *,nsStyleContext *,nsContainerFrame * *,nsFrameItems &,nsIFrame *,PendingBinding *) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 12464 + 0x15] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ace10 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e40caa 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 2 xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlockWithConstructor(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItem &,nsContainerFrame *,nsStyleDisplay const *,nsFrameItems &,nsBlockFrame * (*)(nsIPresShell *,nsStyleContext *)) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 5109 + 0x65] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058acf20 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e4309d 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 3 xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItem &,nsContainerFrame *,nsStyleDisplay const *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 5073 + 0x25] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058acfa0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42f8d 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 4 xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 4017 + 0x20] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058acff0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e41f55 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 5 xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 6410 + 0x23] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad280 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42bf5 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 6 xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 11065 + 0x18] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad300 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42ca1 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 7 xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState &,nsIContent *,nsStyleContext *,nsContainerFrame *,bool,nsFrameItems &,bool,PendingBinding *,nsIFrame *) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 11379 + 0x23] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad360 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e61c92 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 8 xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState &,nsIContent *,nsContainerFrame *,nsContainerFrame *,nsStyleContext *,nsContainerFrame * *,nsFrameItems &,nsIFrame *,PendingBinding *) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 12460 + 0x43] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad600 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e40c95 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 9 xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlockWithConstructor(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItem &,nsContainerFrame *,nsStyleDisplay const *,nsFrameItems &,nsBlockFrame * (*)(nsIPresShell *,nsStyleContext *)) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 5109 + 0x65] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad710 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e4309d 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 10 xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItem &,nsContainerFrame *,nsStyleDisplay const *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 5073 + 0x25] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad790 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42f8d 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 11 xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 4017 + 0x20] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ad7e0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e41f55 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 12 xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 6410 + 0x23] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ada70 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42bf5 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 13 xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 11065 + 0x18] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058adaf0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e42ca1 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 14 xul.dll!nsCSSFrameConstructor::ContentAppended(nsIContent *,nsIContent *,bool,bool,TreeMatchContext *) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 7882 + 0x4f] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058adb50 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e44bb9 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 15 xul.dll!nsCSSFrameConstructor::CreateNeededFrames(nsIContent *,TreeMatchContext &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 7400 + 0x1d] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058adfb0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e487c8 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 16 xul.dll!nsCSSFrameConstructor::CreateNeededFrames(nsIContent *,TreeMatchContext &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 7422 + 0xf] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae080 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e488ed 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 17 xul.dll!nsCSSFrameConstructor::CreateNeededFrames(nsIContent *,TreeMatchContext &) [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 7422 + 0xf] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae150 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e488ed 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 18 xul.dll!nsCSSFrameConstructor::CreateNeededFrames() [nsCSSFrameConstructor.cpp:b0cc5205f6ed : 7441 + 0x10] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae220 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e489d1 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 19 xul.dll!mozilla::GeckoRestyleManager::ProcessPendingRestyles() [GeckoRestyleManager.cpp:b0cc5205f6ed : 540 + 0x11] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae450 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e278b7 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 20 xul.dll!mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) [PresShell.cpp:b0cc5205f6ed : 4183 + 0x1c] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae480 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e16d16 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 21 xul.dll!nsRefreshDriver::Tick(__int64,mozilla::TimeStamp) [nsRefreshDriver.cpp:b0cc5205f6ed : 1921 + 0x29] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058ae4d0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0a817 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 22 xul.dll!mozilla::RefreshDriverTimer::TickDriver(nsRefreshDriver *,__int64,mozilla::TimeStamp) [nsRefreshDriver.cpp:b0cc5205f6ed : 337 + 0x23] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aeb40 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0b3fd 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 23 xul.dll!mozilla::RefreshDriverTimer::TickRefreshDrivers(__int64,mozilla::TimeStamp,nsTArray<RefPtr<nsRefreshDriver> > &) [nsRefreshDriver.cpp:b0cc5205f6ed : 307 + 0x25] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aeba0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0b721 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 24 xul.dll!mozilla::RefreshDriverTimer::Tick(__int64,mozilla::TimeStamp) [nsRefreshDriver.cpp:b0cc5205f6ed : 328 + 0x24] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aec00 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0a1c6 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 25 xul.dll!mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers(mozilla::TimeStamp) [nsRefreshDriver.cpp:b0cc5205f6ed : 770 + 0x29] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aec90 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0993c 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 26 xul.dll!mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::TimeStamp) [nsRefreshDriver.cpp:b0cc5205f6ed : 683 + 0x1a] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aecf0 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0b61b 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 27 xul.dll!mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run() [nsRefreshDriver.cpp:b0cc5205f6ed : 529 + 0x1d] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aed40 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93e0950f 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 28 xul.dll!nsThread::ProcessNextEvent(bool,bool *) [nsThread.cpp:b0cc5205f6ed : 1039 + 0x9] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058aed90 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa926c420d 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 29 xul.dll!NS_ProcessNextEvent(nsIThread *,bool) [nsThreadUtils.cpp:b0cc5205f6ed : 521 + 0xd] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058af440 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa926c333f 23:42:12 INFO - Found by: call frame info 23:42:12 INFO - 30 xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate *) [MessagePump.cpp:b0cc5205f6ed : 97 + 0xa] 23:42:12 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:12 INFO - rsp = 0x000000c3058af470 r12 = 0x000000c3058adc20 23:42:12 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:12 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa929f5e56 23:42:12 INFO - Found by: call frame info 23:42:13 INFO - 31 xul.dll!MessageLoop::RunHandler() [message_loop.cc:b0cc5205f6ed : 319 + 0xf] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af4d0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa929d8693 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 32 xul.dll!MessageLoop::Run() [message_loop.cc:b0cc5205f6ed : 299 + 0x8] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af500 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa929d8396 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 33 xul.dll!nsBaseAppShell::Run() [nsBaseAppShell.cpp:b0cc5205f6ed : 158 + 0xd] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af550 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93c4d3f7 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 34 xul.dll!nsAppShell::Run() [nsAppShell.cpp:b0cc5205f6ed : 230 + 0x8] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af580 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa93c9bb27 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 35 xul.dll!nsAppStartup::Run() [nsAppStartup.cpp:b0cc5205f6ed : 288 + 0xa] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af5b0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa94a4a8cf 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 36 xul.dll!XREMain::XRE_mainRun() [nsAppRunner.cpp:b0cc5205f6ed : 4645 + 0xb] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af5e0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa94ab6147 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 37 xul.dll!XREMain::XRE_main(int,char * * const,mozilla::BootstrapConfig const &) [nsAppRunner.cpp:b0cc5205f6ed : 4809 + 0x8] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af870 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa94ab4253 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 38 xul.dll!XRE_main(int,char * * const,mozilla::BootstrapConfig const &) [nsAppRunner.cpp:b0cc5205f6ed : 4904 + 0x12] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058af950 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fa94ab3cec 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 39 firefox.exe!do_main [nsBrowserApp.cpp:b0cc5205f6ed : 236 + 0x21] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058afaf0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007f7b86218e0 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 40 firefox.exe!NS_internal_main(int,char * *,char * *) [nsBrowserApp.cpp:b0cc5205f6ed : 309 + 0xd] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058afcb0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007f7b8621410 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 41 firefox.exe!wmain [nsWindowsWMain.cpp:b0cc5205f6ed : 115 + 0x14] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058afd20 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007f7b8621b97 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 42 firefox.exe!__scrt_common_main_seh [exe_common.inl : 253 + 0x22] 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058afd80 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007f7b864c271 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 43 kernel32.dll!BaseThreadInitThunk + 0x1a 23:42:13 INFO - rbx = 0x000000c32d24b400 rbp = 0x000000c3058aced9 23:42:13 INFO - rsp = 0x000000c3058afdc0 r12 = 0x000000c3058adc20 23:42:13 INFO - r13 = 0x000000c32c61f280 r14 = 0x000000c3058acfc0 23:42:13 INFO - r15 = 0x000000c32d24b760 rip = 0x000007fab03f167e 23:42:13 INFO - Found by: call frame info 23:42:13 INFO - 44 ntdll.dll!RtlUserThreadStart + 0x21 23:42:13 INFO - rsp = 0x000000c3058afdf0 rip = 0x000007fab23ac3f1 23:42:13 INFO - Found by: stack scanning 23:42:13 INFO - 45 KERNELBASE.dll!GetLegacyComposition + 0x1180 23:42:13 INFO - rsp = 0x000000c3058afe20 rip = 0x000007faaf4709d0 23:42:13 INFO - Found by: stack scanning Failure log connection lost: https://treeherder.mozilla.org/logviewer.html#?job_id=126975530&repo=autoland 06:23:32 INFO - TEST-START | dom/canvas/test/webgl-conf/generated/test_conformance__extensions__webgl-compressed-texture-size-limit.html 06:23:32 INFO - TEST-SKIP | dom/canvas/test/webgl-conf/generated/test_conformance__extensions__webgl-compressed-texture-size-limit.html | took 0ms 06:23:32 INFO - Running manifest: dom\canvas\test\webgl-conf\generated-mochitest.ini 06:23:32 INFO - Z:\task_1504070343\build\tests\bin\pk12util.exe: PKCS12 IMPORT SUCCESSFUL 06:23:32 INFO - MochitestServer : launching [u'Z:\\task_1504070343\\build\\tests\\bin\\xpcshell.exe', '-g', 'Z:\\task_1504070343\\build\\application\\firefox', '-v', '170', '-f', 'Z:\\task_1504070343\\build\\tests\\bin\\components\\httpd.js', '-e', "const _PROFILE_PATH = 'c:\\\\users\\\\genericworker\\\\appdata\\\\local\\\\temp\\\\tmpigf5zc.mozrunner'; const _SERVER_PORT = '8888'; const _SERVER_ADDR = '127.0.0.1'; const _TEST_PREFIX = undefined; const _DISPLAY_RESULTS = false;", '-f', 'Z:\\task_1504070343\\build\\tests\\mochitest\\server.js'] 06:23:32 INFO - runtests.py | Server pid: 2716 06:23:32 INFO - runtests.py | Websocket server pid: 3192 06:23:32 INFO - runtests.py | SSL tunnel pid: 716 06:23:32 INFO - Couldn't convert chrome URL: chrome://branding/locale/brand.properties 06:23:32 INFO - [2716] WARNING: Failed to get directory to cache.: file z:/build/build/src/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp, line 85 06:23:32 INFO - [2716] WARNING: Failed to get directory to cache.: file z:/build/build/src/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp, line 85 06:23:32 INFO - [2716] WARNING: Could not get the program name for a cubeb stream.: 'NS_SUCCEEDED(rv)', file z:/build/build/src/dom/media/CubebUtils.cpp, line 370 06:23:32 INFO - runtests.py | Running with e10s: False 06:23:32 INFO - runtests.py | Running tests: start. 06:23:32 INFO - Application command: Z:\task_1504070343\build\application\firefox\firefox.exe -marionette -foreground -profile c:\users\genericworker\appdata\local\temp\tmpigf5zc.mozrunner 06:23:32 INFO - runtests.py | Application pid: 816 06:23:32 INFO - TEST-INFO | started process GECKO(816) 06:23:33 INFO - GECKO(816) | ### XPCOM_MEM_BLOAT_LOG defined -- logging bloat/leaks to c:\users\genericworker\appdata\local\temp\tmpigf5zc.mozrunner\runtests_leaks.log 06:23:33 INFO - GECKO(816) | [816] WARNING: Failed to load startupcache file correctly, removing!: file z:/build/build/src/startupcache/StartupCache.cpp, line 218 06:23:33 INFO - GECKO(816) | 1504074213609 addons.xpi WARN Error parsing extensions state: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [amIAddonManagerStartup.readStartupData]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm :: loadExtensionState :: line 1505" data: no] Stack trace: loadExtensionState()@resource://gre/modules/addons/XPIProvider.jsm:1505 < getInstallState()@resource://gre/modules/addons/XPIProvider.jsm:1540 < checkForChanges()@resource://gre/modules/addons/XPIProvider.jsm:3075 < startup()@resource://gre/modules/addons/XPIProvider.jsm:2142 < callProvider()@resource://gre/modules/AddonManager.jsm:263 < _startProvider()@resource://gre/modules/AddonManager.jsm:731 < startup()@resource://gre/modules/AddonManager.jsm:898 < startup()@resource://gre/modules/AddonManager.jsm:3082 < observe()@jar:file:///Z:/task_1504070343/build/application/firefox/omni.ja!/components/addonManager.js:65 06:23:33 INFO - GECKO(816) | [816] WARNING: This method is lossy. Use GetCanonicalPath !: file z:/build/build/src/xpcom/io/nsLocalFileWin.cpp, line 3571 06:23:35 INFO - GECKO(816) | ++DOCSHELL 18AE5400 == 1 [pid = 816] [id = {a34f893c-ed4a-429f-99c6-18283f30b5c7}] 06:23:35 INFO - GECKO(816) | ++DOMWINDOW == 1 (17CC3400) [pid = 816] [serial = 1] [outer = 00000000] 06:23:35 INFO - GECKO(816) | ++DOMWINDOW == 2 (17CC3C00) [pid = 816] [serial = 2] [outer = 17CC3400] 06:23:35 INFO - GECKO(816) | [816] WARNING: 'NS_FAILED(GetAccentColor(unused))', file z:/build/build/src/widget/windows/nsLookAndFeel.cpp, line 450 06:23:35 INFO - GECKO(816) | [816] WARNING: DWM not enabled, falling back to software vsync: file z:/build/build/src/gfx/thebes/gfxWindowsPlatform.cpp, line 1904 06:23:39 INFO - GECKO(816) | 1504074219758 Marionette INFO Enabled via --marionette 06:23:39 INFO - GECKO(816) | ++DOCSHELL 0DE7D800 == 2 [pid = 816] [id = {9b2a089a-1782-42f3-ad96-c764ab59ec27}] 06:23:39 INFO - GECKO(816) | ++DOMWINDOW == 3 (0DE7DC00) [pid = 816] [serial = 3] [outer = 00000000] 06:23:39 INFO - GECKO(816) | ++DOMWINDOW == 4 (0DE7E400) [pid = 816] [serial = 4] [outer = 0DE7DC00] 06:23:39 INFO - GECKO(816) | ++DOCSHELL 1BF2E800 == 3 [pid = 816] [id = {d7c64ba5-e816-44a8-8a77-f510bc83d565}] 06:23:39 INFO - GECKO(816) | ++DOMWINDOW == 5 (1BF2EC00) [pid = 816] [serial = 5] [outer = 00000000] 06:23:39 INFO - GECKO(816) | ++DOMWINDOW == 6 (1BF2F400) [pid = 816] [serial = 6] [outer = 1BF2EC00] 06:23:40 INFO - GECKO(816) | ++DOMWINDOW == 7 (1C9F1C00) [pid = 816] [serial = 7] [outer = 0DE7DC00] 06:23:40 INFO - GECKO(816) | ++DOCSHELL 1D144400 == 4 [pid = 816] [id = {f83ec8e3-60c6-46cd-8230-a0213bdb4455}] 06:23:40 INFO - GECKO(816) | ++DOMWINDOW == 8 (1D144C00) [pid = 816] [serial = 8] [outer = 00000000] 06:23:40 INFO - GECKO(816) | ++DOCSHELL 17CC5000 == 5 [pid = 816] [id = {2485be94-70cf-4905-b4a9-0ea3f79000c8}] 06:23:40 INFO - GECKO(816) | ++DOMWINDOW == 9 (1CB48400) [pid = 816] [serial = 9] [outer = 00000000] 06:23:40 INFO - GECKO(816) | ++DOMWINDOW == 10 (1D4CE400) [pid = 816] [serial = 10] [outer = 1CB48400] 06:23:40 INFO - GECKO(816) | ++DOMWINDOW == 11 (18C41C00) [pid = 816] [serial = 11] [outer = 1CB48400] 06:25:33 INFO - Traceback (most recent call last): 06:25:33 INFO - File "Z:\task_1504070343\build\tests\mochitest\runtests.py", line 2635, in doTests 06:25:33 INFO - marionette_args=marionette_args, 06:25:33 INFO - File "Z:\task_1504070343\build\tests\mochitest\runtests.py", line 2165, in runApp 06:25:33 INFO - self.marionette.start_session(timeout=port_timeout) 06:25:33 INFO - File "Z:\task_1504070343\build\venv\lib\site-packages\marionette_driver\decorators.py", line 28, in _ 06:25:34 INFO - m._handle_socket_failure() 06:25:34 INFO - File "Z:\task_1504070343\build\venv\lib\site-packages\marionette_driver\decorators.py", line 23, in _ 06:25:34 INFO - return func(*args, **kwargs) 06:25:34 INFO - File "Z:\task_1504070343\build\venv\lib\site-packages\marionette_driver\marionette.py", line 1203, in start_session 06:25:34 INFO - self.protocol, _ = self.client.connect() 06:25:34 INFO - File "Z:\task_1504070343\build\venv\lib\site-packages\marionette_driver\transport.py", line 223, in connect 06:25:34 INFO - self.sock.connect((self.addr, self.port)) 06:25:34 INFO - File "c:\mozilla-build\python\Lib\socket.py", line 228, in meth 06:25:34 INFO - return getattr(self._sock,name)(*args) 06:25:34 INFO - error: [Errno 10061] No connection could be made because the target machine actively refused it 06:25:34 INFO - 0 ERROR Automation Error: Received unexpected exception while running application
Flags: needinfo?(xidorn+moz)
Pushed by ecoal95@gmail.com: https://hg.mozilla.org/integration/autoland/rev/fcfaa1a9b106 Revert "Backed out changeset 11803fe39188 as being the servo side of bug 1393189. r=backout on a CLOSED TREE"
Pushed by kwierso@gmail.com: https://hg.mozilla.org/mozilla-central/rev/fb56ee6c4eb7 Revert "Backed out changeset 11803fe39188 as being the servo side of bug 1393189. r=backout on a CLOSED TREE"
OK, so this is a bug on MSVC 2015 that, constexpr object would have their vtable pointer being null. The workaround is to make it const rather than constexpr for MSVC 2015. Will re-land the patches soon. https://treeherder.mozilla.org/#/jobs?repo=try&revision=2de8fc839ce462f31a257496ef7165812dcdbe32
Flags: needinfo?(xidorn+moz)
Pushed by xquan@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f0f581ed201f part 0 - Reorder NS_STYLE_LIST_STYLE_* consts to match the order in nsCSSProps::kListStyleKTable. r=dholbert https://hg.mozilla.org/integration/autoland/rev/f0481aa56d17 part 1 - Statically initialize builtin style table with their name atom included. r=dholbert https://hg.mozilla.org/integration/autoland/rev/92f380250d23 part 2 - Have CounterStyle::GetStyleName return nsIAtom and make it const. r=dholbert https://hg.mozilla.org/integration/autoland/rev/c69cd397ec43 part 3 - Replace all uses of nsCSSProps::kListStyleKTable with gBuiltinStyleTable. r=dholbert https://hg.mozilla.org/integration/autoland/rev/e2e8b462c00e part 4 - Remove kListStyleKTable and CSS keywords only used in this table. r=dholbert https://hg.mozilla.org/integration/autoland/rev/ea351997a8aa part 5 - Rewrite CounterStyleOrNone::from_gecko_value to use fewer binding functions. r=heycam https://hg.mozilla.org/integration/autoland/rev/02d4f687f0e6 part 6 - Add crashtest for this bug. r=heycam
I believe this has lead to a regression in my local builds where the assertion in CounterStylePtr& oeprator=(CounterStyle* aCounterStyle) is firing.. It appears to have an aCoutnerStyle object with an invalid vtable ptr.
Comment on attachment 8902196 [details] Bug 1393189 part 1 - Statically initialize builtin style table with their name atom included. https://reviewboard.mozilla.org/r/173586/#review180172 ::: layout/style/CounterStyleManager.cpp:966 (Diff revision 4) > } > } > > +// MSVC 2015 has a bug that vtable pointer of constexpr objects is null, > +// which would cause startup crash. So const is used instead here for > +// pre-2017 version of MSVC to workaround this issue. This is the cause of my issue. It appears 2017 still makes vtable pointers of constexpr objects be null.
Flags: needinfo?(xidorn+moz)
I can confirm that changing the ifdefs to just !defined(_MSC_VER) fixes the issues.
(In reply to Bas Schouten (:bas.schouten) from comment #55) > I can confirm that changing the ifdefs to just !defined(_MSC_VER) fixes the > issues. It works fine for me locally, and I'm using MSVC2017. My guess is that, this bug existed in some early version of MSVC2017, and after some updates, it gets fixed. My local version is Visual Studio 15.3.3, whose corresponding cl version is 19.11.25507.1. You may want to upgrade you MSVC install to latest version. Also, I guess we can change the version check from 1910 to 1911. Could you confirm if that works for you?
Flags: needinfo?(xidorn+moz)
Flags: in-testsuite? → in-testsuite+
(In reply to Xidorn Quan [:xidorn] UTC+10 from comment #56) > (In reply to Bas Schouten (:bas.schouten) from comment #55) > > I can confirm that changing the ifdefs to just !defined(_MSC_VER) fixes the > > issues. > > It works fine for me locally, and I'm using MSVC2017. My guess is that, this > bug existed in some early version of MSVC2017, and after some updates, it > gets fixed. > > My local version is Visual Studio 15.3.3, whose corresponding cl version is > 19.11.25507.1. You may want to upgrade you MSVC install to latest version. > > Also, I guess we can change the version check from 1910 to 1911. Could you > confirm if that works for you? I ran into the same issue as Bas. I see I have an update for VS 2017 so I'll give that a try. I can also confirm that changing the version check from 1910 to 1911 also fixes the issue for me.
Bug 1424281 just made VS2017 15.6 the minimum VS version for Firefox 61, so we can remove this constexpr/const workaround needed for VS2015 and early VS2017 versions. Bug 1445105 is the meta bug tracking VS workarounds that can be removed now that we're using 15.6. https://hg.mozilla.org/mozilla-central/rev/f0481aa56d17#l4.78
Depends on: 1448436
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: