Closed Bug 1648877 Opened 4 years ago Closed 4 years ago

Assertion failure: removedElement == this, at /builds/worker/checkouts/gecko/dom/html/HTMLDialogElement.cpp:73

Categories

(Core :: DOM: Core & HTML, defect)

defect

Tracking

()

RESOLVED FIXED
mozilla80
Tracking Status
firefox-esr68 --- wontfix
firefox-esr78 --- wontfix
firefox77 --- wontfix
firefox78 --- wontfix
firefox79 --- wontfix
firefox80 --- fixed

People

(Reporter: tsmith, Assigned: sefeng)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached file testcase.html

Assertion failure: removedElement == this, at /builds/worker/checkouts/gecko/dom/html/HTMLDialogElement.cpp:73

0|0|libxul.so|mozilla::dom::HTMLDialogElement::RemoveFromTopLayerIfNeeded()|hg:hg.mozilla.org/mozilla-central:dom/html/HTMLDialogElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|73|0x29
0|1|libxul.so|mozilla::dom::HTMLDialogElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/HTMLDialogElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|78|0x5
0|2|libxul.so|mozilla::dom::Element::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/base/Element.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1828|0xe
0|3|libxul.so|nsGenericHTMLElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|474|0xc
0|4|libxul.so|nsGenericHTMLFormElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1741|0xc
0|5|libxul.so|mozilla::dom::HTMLTextAreaElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/HTMLTextAreaElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|844|0x5
0|6|libxul.so|mozilla::dom::Element::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/base/Element.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1828|0xe
0|7|libxul.so|nsGenericHTMLElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|474|0xc
0|8|libxul.so|mozilla::dom::Element::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/base/Element.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1828|0xe
0|9|libxul.so|nsGenericHTMLElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|474|0xc
0|10|libxul.so|mozilla::dom::Element::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/base/Element.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1828|0xe
0|11|libxul.so|nsGenericHTMLElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|474|0xc
0|12|libxul.so|mozilla::dom::HTMLSharedElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/HTMLSharedElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|250|0xb
0|13|libxul.so|mozilla::dom::Element::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/base/Element.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|1828|0xe
0|14|libxul.so|nsGenericHTMLElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/nsGenericHTMLElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|474|0xc
0|15|libxul.so|mozilla::dom::HTMLSharedElement::UnbindFromTree(bool)|hg:hg.mozilla.org/mozilla-central:dom/html/HTMLSharedElement.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|250|0xb
0|16|libxul.so|mozilla::dom::Document::cycleCollection::Unlink(void*)|hg:hg.mozilla.org/mozilla-central:dom/base/Document.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|2222|0x19
0|17|libxul.so|nsCycleCollector::CollectWhite()|hg:hg.mozilla.org/mozilla-central:xpcom/base/nsCycleCollector.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|3083|0x9
0|18|libxul.so|nsCycleCollector::Collect(ccType, js::SliceBudget&, nsICycleCollectorListener*, bool)|hg:hg.mozilla.org/mozilla-central:xpcom/base/nsCycleCollector.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|3432|0x8
0|19|libxul.so|nsCycleCollector::ShutdownCollect()|hg:hg.mozilla.org/mozilla-central:xpcom/base/nsCycleCollector.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|3352|0x15
0|20|libxul.so|nsCycleCollector::Shutdown(bool)|hg:hg.mozilla.org/mozilla-central:xpcom/base/nsCycleCollector.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|3641|0x8
0|21|libxul.so|nsCycleCollector_shutdown(bool)|hg:hg.mozilla.org/mozilla-central:xpcom/base/nsCycleCollector.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|3956|0x11
0|22|libxul.so|mozilla::ShutdownXPCOM(nsIServiceManager*)|hg:hg.mozilla.org/mozilla-central:xpcom/build/XPCOMInit.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|721|0xa
0|23|libxul.so|XRE_TermEmbedding()|hg:hg.mozilla.org/mozilla-central:toolkit/xre/nsEmbedFunctions.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|223|0x7
0|24|libxul.so|mozilla::ipc::ScopedXREEmbed::Stop()|hg:hg.mozilla.org/mozilla-central:ipc/glue/ScopedXREEmbed.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|90|0x5
0|25|libxul.so|XRE_InitChildProcess(int, char**, XREChildData const*)|hg:hg.mozilla.org/mozilla-central:toolkit/xre/nsEmbedFunctions.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|748|0xe
0|26|firefox-bin|content_process_main(mozilla::Bootstrap*, int, char**)|hg:hg.mozilla.org/mozilla-central:ipc/contentproc/plugin-container.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|56|0x11
0|27|firefox-bin|main|hg:hg.mozilla.org/mozilla-central:browser/app/nsBrowserApp.cpp:8fcf1cac56600d932240486ffe7a06d46a0c931c|303|0x20
Flags: in-testsuite?

A Pernosco session is available here: https://pernos.co/debug/XIRoCMmPrW1CqGFszsulsQ/index.html

Flags: needinfo?(sefeng)

Ah, nice...there's a bug.

dialog.requestFullscreen() // Adds the element to top layer
dialog.showModal() // Re-add the element and set the `NS_EVENT_STATE_MODAL_DIALOG` state
document.exitFulscreen() // Removes the element from toplayer because the element has `NS_EVENT_STATE_FULLSCREEN` state and without unset the `NS_EVENT_STATE_MODAL_DIALOG`  state
dialog.close() // Crash!!

So I think the problem is <dialog> can't be a fullscreen element per spec, and we don't have this enforcement in our code.

I'll have a patch up to fix it.

Flags: needinfo?(sefeng)
Assignee: nobody → sefeng

Per fullscreen api spec,
https://fullscreen.spec.whatwg.org/#dom-element-requestfullscreen,
fullscreen request should be denied if the requesting element is
<dialog>

Pushed by sefeng@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/bfd857646de4 Deny the fullscreen request if the element is dialog r=smaug
Backout by csabou@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/47f18d1138df Backed out 1 changesets for mochitest failures on test_bug1648877_dialog_fullscreen_denied.html. CLOSED TREE

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&revision=bfd857646de46febb77de2614afba5f7b514699e&selectedTaskRun=VElYOwLQSoqhRa_pn9MKJw.0

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=308041271&repo=autoland

Backout link: https://hg.mozilla.org/integration/autoland/rev/47f18d1138df

[task 2020-06-30T16:28:55.827Z] 16:28:55     INFO - TEST-START | dom/html/test/dialog/test_bug1648877_dialog_fullscreen_denied.html
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/base/Document.cpp, line 15138
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/base/Document.cpp, line 15123
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/base/Document.cpp, line 15281
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/base/Document.cpp, line 15138
[task 2020-06-30T16:28:57.359Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/base/Document.cpp, line 15123
[task 2020-06-30T16:28:57.360Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:28:57.360Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:28:57.360Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:28:57.360Z] 16:28:57     INFO - GECKO(1673) | [Child 1675, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActorProtocol.cpp, line 172
[task 2020-06-30T16:29:18.504Z] 16:29:18     INFO - GECKO(1673) | 2020-06-30 16:29:18.484 firefox[1673:14428] Persistent UI failed to open file file:///Users/cltbld/Library/Saved%20Application%20State/org.mozilla.nightlydebug.savedState/window_1.data: No such file or directory (2)
[task 2020-06-30T16:33:56.431Z] 16:33:56     INFO - TEST-INFO | started process screencapture
[task 2020-06-30T16:33:56.537Z] 16:33:56     INFO - TEST-INFO | screencapture: exit 0
[task 2020-06-30T16:33:56.537Z] 16:33:56     INFO - TEST-UNEXPECTED-FAIL | dom/html/test/dialog/test_bug1648877_dialog_fullscreen_denied.html | Test timed out. 
[task 2020-06-30T16:33:56.537Z] 16:33:56     INFO -     SimpleTest.ok@SimpleTest/SimpleTest.js:409:16
[task 2020-06-30T16:33:56.537Z] 16:33:56     INFO -     reportError@SimpleTest/TestRunner.js:138:22
[task 2020-06-30T16:33:56.537Z] 16:33:56     INFO -     TestRunner._checkForHangs@SimpleTest/TestRunner.js:160:18
[task 2020-06-30T16:33:57.460Z] 16:33:57     INFO - GECKO(1673) | JavaScript error: resource://specialpowers/WrapPrivileged.jsm, line 272: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIMemoryReporterManager.vsizeMaxContiguous]
[task 2020-06-30T16:33:57.460Z] 16:33:57     INFO - GECKO(1673) | MEMORY STAT vsizeMaxContiguous not supported in this build configuration.
[task 2020-06-30T16:33:57.460Z] 16:33:57     INFO - GECKO(1673) | MEMORY STAT | vsize 7346MB | residentFast 102MB | heapAllocated 13MB
[task 2020-06-30T16:33:57.499Z] 16:33:57     INFO - TEST-OK | dom/html/test/dialog/test_bug1648877_dialog_fullscreen_denied.html | took 301652ms
Flags: needinfo?(sefeng)
Pushed by sefeng@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/2857d4830d51 Deny the fullscreen request if the element is dialog r=smaug
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla80
Flags: needinfo?(sefeng)
Flags: in-testsuite?
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: