Closed Bug 893324 Opened 6 years ago Closed 6 years ago

"Assertion failure: mCleanedUp" quitting during alert, with showModalDialog

Categories

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

x86_64
macOS
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla25

People

(Reporter: jruderman, Assigned: bholley)

References

(Blocks 2 open bugs)

Details

(Keywords: assertion, testcase)

Attachments

(3 files)

Attached file testcase
1. Set:
     user_pref("dom.disable_open_during_load", false);
2. Load the testcase
3. While the alert is still up, press Cmd+Q

Assertion failure: mCleanedUp, at dom/base/nsGlobalWindow.cpp:1258

Based on the stack trace, I suspect bug 789919 (snow-white).
Attached file stack
> Based on the stack trace, I suspect bug 789919 (snow-white).

Except the fuzzer found it on July 8, before snow-white landed.  So maybe bug 860941?
Stacks that involve the destructor of any CCed thing are now going to involve SnowWhiteKiller.
https://tbpl.mozilla.org/?tree=Try&rev=7aaf5bcb2ecf
Assignee: nobody → bobbyholley+bmo
Historically, we've had a bunch of complicated machinery to delay the call to
CleanUp() for modal dialogs, since we needed to harvest the return value after
the window closed. But in the current world we don't actually null out
mReturnValue in CleanUp() at all, which presumably happened sometime around the
time mReturnValue became cycle-collected. So this stuff can just go away. \o/

That simplification is righteous in itself. But it also fixes the bug here as-
filed. When the user quits while a modal dialog is currently being displayed,
a failure code ends up bubbling up through windowWatcher to the OpenInternal call
in nsGlobalWindow::ShowModalDialog, which means that we're unable to do our
delayed CleanUp() call for the outer modal window. At first it seemed like a hard
problem to solve, but with the above it becomes trivial.
Attachment #781378 - Flags: review?(jst)
Is this simplification expected to fix any of my other recent showModalDialog bugs? (Bug 893340, bug 897399, bug 897867)
(In reply to Jesse Ruderman from comment #6)
> Is this simplification expected to fix any of my other recent
> showModalDialog bugs? (Bug 893340, bug 897399, bug 897867)

From a cursory glance at those three bugs, I would guess 'no'.
Comment on attachment 781378 [details] [diff] [review]
Invoke CleanUp synchronously and unconditionally for modal dialog windows. v1

Nice!
Attachment #781378 - Flags: review?(jst) → review+
Oh hm, looks like what appeared to be an intermittent failure on the try push occurred again when I retriggered it (test_bug893537.html). I'm still pretty sure this patch isn't the culprit, since this only affects modal dialogs, and we don't appear to be invoking showModalDialog anywhere in that test directory.

If I'd noticed this before pushing, I would have done another try push on a new base rev. But for now let's just hope for the best.
https://hg.mozilla.org/mozilla-central/rev/a685f0150c6c
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla25
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.