Closed Bug 1586600 Opened 5 years ago Closed 5 years ago

Assertion failure: !OwnerDoc()->IsScrollingElement(this) (How can we have a scrollframe if we're the scrollingElement for our document?), at dom/base/Element.cpp:682

Categories

(Core :: Layout, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla71
Tracking Status
firefox-esr60 --- wontfix
firefox-esr68 --- wontfix
firefox67 --- wontfix
firefox68 --- wontfix
firefox69 --- wontfix
firefox70 --- wontfix
firefox71 --- fixed

People

(Reporter: bc, Assigned: emilio)

References

()

Details

(Keywords: assertion, reproducible)

Attachments

(2 files)

  1. https://viewpoint.guide/de/l/Deutschland

  2. Assert Nightly Linux/Windows. Reproduced on Firefox 69.0.2 on Linux.

Assertion failure: !OwnerDoc()->IsScrollingElement(this) (How can we have a scrollframe if we're the scrollingElement for our document?), at z:/build/build/src/dom/base/Element.cpp:682
#01: static bool mozilla::dom::Element_Binding::get_clientWidth(struct JSContext *, class JS::Handle<JSObject *>, class mozilla::dom::Element *, class JSJitGetterCallArgs) [s3:gecko-generated-sources:51a14dfd514674defbc9a9ff0267ed73aadb212a931115b4a0d8b6352f2b60a953a1bb113d8992f8f3e58c2c3c18224eef8e1a7fd7f9668e0ca0c98492134cc7/dom/bindings/ElementBinding.cpp::3633]
#02: mozilla::dom::binding_detail::GenericGetter<mozilla::dom::binding_detail::NormalThisPolicy,mozilla::dom::binding_detail::ThrowExceptions>(JSContext *,unsigned int,JS::Value *) [dom/bindings/BindingUtils.cpp:3134]
#03: CallJSNative(JSContext *,bool (*)(JSContext *,unsigned int,JS::Value *),js::CallReason,JS::CallArgs const &) [js/src/vm/Interpreter.cpp:458]
#04: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:551]
#05: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#06: js::CallGetter(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:761]
#07: static bool GetExistingProperty<js::CanGC>(struct JSContext *, class JS::Handle<JS::Value>, class JS::Handle<js::NativeObject *>, class JS::Handle<js::Shape *>, class JS::MutableHandle<JS::Value>) [js/src/vm/NativeObject.cpp:2321]
#08: static bool NativeGetPropertyInline<js::CanGC>(struct JSContext *, class JS::Handle<js::NativeObject *>, class JS::Handle<JS::Value>, class JS::Handle<JS::PropertyKey>, IsNameLookup, class JS::MutableHandle<JS::Value>) [js/src/vm/NativeObject.cpp:2581]
#09: js::NativeGetProperty(JSContext *,JS::Handle<js::NativeObject *>,JS::Handle<JS::Value>,JS::Handle<JS::PropertyKey>,JS::MutableHandle<JS::Value>) [js/src/vm/NativeObject.cpp:2618]
#10: js::GetProperty(JSContext *,JS::Handle<JSObject *>,JS::Handle<JS::Value>,js::PropertyName *,JS::MutableHandle<JS::Value>) [js/src/vm/ObjectOperations-inl.h:124]
#11: js::GetProperty(JSContext *,JS::Handle<JS::Value>,JS::Handle<js::PropertyName *>,JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:4542]
#12: static bool Interpret(struct JSContext *, class js::RunState & const) [js/src/vm/Interpreter.cpp:2798]
#13: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:424]
#14: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:592]
#15: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#16: js::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,js::AnyInvokeArgs const &,JS::MutableHandle<JS::Value>,js::CallReason) [js/src/vm/Interpreter.cpp:637]
#17: js::fun_apply(JSContext *,unsigned int,JS::Value *) [js/src/vm/JSFunction.cpp:1184]
#18: CallJSNative(JSContext *,bool (*)(JSContext *,unsigned int,JS::Value *),js::CallReason,JS::CallArgs const &) [js/src/vm/Interpreter.cpp:458]
#19: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:551]
#20: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#21: static bool Interpret(struct JSContext *, class js::RunState & const) [js/src/vm/Interpreter.cpp:0]
#22: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:424]
#23: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:592]
#24: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#25: js::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,js::AnyInvokeArgs const &,JS::MutableHandle<JS::Value>,js::CallReason) [js/src/vm/Interpreter.cpp:637]
#26: js::fun_apply(JSContext *,unsigned int,JS::Value *) [js/src/vm/JSFunction.cpp:1184]
#27: CallJSNative(JSContext *,bool (*)(JSContext *,unsigned int,JS::Value *),js::CallReason,JS::CallArgs const &) [js/src/vm/Interpreter.cpp:458]
#28: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:551]
#29: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#30: static bool Interpret(struct JSContext *, class js::RunState & const) [js/src/vm/Interpreter.cpp:0]
#31: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:424]
#32: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct,js::CallReason) [js/src/vm/Interpreter.cpp:592]
#33: static bool InternalCall(struct JSContext *, const class js::AnyInvokeArgs & const, js::CallReason) [js/src/vm/Interpreter.cpp:620]
#34: js::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,js::AnyInvokeArgs const &,JS::MutableHandle<JS::Value>,js::CallReason) [js/src/vm/Interpreter.cpp:637]
#35: js::jit::InvokeFunction(JSContext *,JS::Handle<JSObject *>,bool,bool,unsigned int,JS::Value *,JS::MutableHandle<JS::Value>) [js/src/jit/VMFunctions.cpp:260]
#36: js::jit::InvokeFromInterpreterStub(JSContext *,js::jit::InterpreterStubExitFrameLayout *) [js/src/jit/VMFunctions.cpp:289]
#37: ??? (???:???)

[wrong bug]

Component: DOM: Core & HTML → Layout
Flags: needinfo?(emilio)

I cannot repro anymore, looks like, can you confirm?

Flags: needinfo?(emilio) → needinfo?(bob)

I was just able to reproduce using 20191013093601 Nightly on Fedora 30 twice in a row by just loading the url from the command line. Starting the browser and pasting the url into the urlbar also worked for me.

Assertion failure: !OwnerDoc()->IsScrollingElement(this) (How can we have a scrollframe if we're the scrollingElement for our document?), at /builds/worker/workspace/build/src/dom/base/Element.cpp:576
#01: mozilla::dom::Element::GetClientAreaRect() (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#02: mozilla::dom::Element::ClientWidth() (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#03: mozilla::dom::Element_Binding::get_clientWidth(JSContext*, JS::Handle<JSObject*>, mozilla::dom::Element*, JSJitGetterCallArgs) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#04: bool mozilla::dom::binding_detail::GenericGetter<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#05: CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#06: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#07: js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#08: bool GetExistingProperty<(js::AllowGC)1>(JSContext*, js::MaybeRooted<JS::Value, (js::AllowGC)1>::HandleType, js::MaybeRooted<js::NativeObject*, (js::AllowGC)1>::HandleType, js::MaybeRooted<js::Shape*, (js::AllowGC)1>::HandleType, js::MaybeRooted<JS::Value, (js::AllowGC)1>::MutableHandleType) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#09: bool NativeGetPropertyInline<(js::AllowGC)1>(JSContext*, js::MaybeRooted<js::NativeObject*, (js::AllowGC)1>::HandleType, js::MaybeRooted<JS::Value, (js::AllowGC)1>::HandleType, js::MaybeRooted<JS::PropertyKey, (js::AllowGC)1>::HandleType, IsNameLookup, js::MaybeRooted<JS::Value, (js::AllowGC)1>::MutableHandleType) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
#10: js::GetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, js::PropertyName*, JS::MutableHandle<JS::Value>) (/home/bclary/mozilla/builds/nightly/mozilla/firefox-debug/dist/bin/libxul.so)
Flags: needinfo?(bob)

Hmm, maybe I didn't wait long enough? I'm on Fedora 31, on a local nightly build but...

Yeah, apparently I just had to wait more. Unoptimized builds, what a joy... Anyhow, I got it on rr now.

Flags: needinfo?(emilio)
Attached file Testcase. (deleted) —

From https://drafts.csswg.org/css-overflow/#overflow-propagation:

UAs must apply the overflow-* values set on the root element to the viewport.
However, when the root element is an [HTML] html element (including XML syntax
for HTML) whose overflow value is visible (in both axes), and that element has
a body element as a child, user agents must instead apply the overflow-*
values of the first such child element to the viewport. The element from which
the value is propagated must then have a used overflow value of visible.

Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/2947c5ae2f8b Make nsPresContext's overflow propagation match the spec. r=hiro
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/19683 for changes under testing/web-platform/tests
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.
Upstream PR was closed without merging
Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a1dfda272023 Make nsPresContext's overflow propagation match the spec. r=hiro
Flags: needinfo?(emilio)
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla71
Assignee: nobody → emilio
Upstream PR merged by moz-wptsync-bot
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: