Open Bug 398103 Opened 17 years ago Updated 2 years ago

Assertion failure in nsGlobalWindow::LeaveModalState

Categories

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

defect

Tracking

()

People

(Reporter: kinetik, Unassigned)

References

()

Details

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-1)
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a9pre) Gecko/2007100114 Minefield/3.0a9pre

The assertion in nsGlobalWindow::LeaveModalState consistently fires when quitting the browser from an idle window when a second window is open and blocked by a modal dialog.

Reproducible: Always

Steps to Reproduce:
1. Open a browser window
2. Open URL in a new browser window
3. Select File->Quit from idle browser window, click Quit
Actual Results:  
###!!! ASSERTION: Uh, LeaveModalState() called w/o a reachable top window?: 'Error', file /home/kinetik/work/trunk/mozilla/dom/src/base/nsGlobalWindow.cpp, line 5040
--WEBSHELL 0xb15ae200 == 6

###!!! ASSERTION: Uh, LeaveModalState() called w/o a reachable top window?: 'Error', file /home/kinetik/work/trunk/mozilla/dom/src/base/nsGlobalWindow.cpp, line 5040
--WEBSHELL 0x8209438 == 5


Expected Results:  
Clean shutdown.

#0  nsGlobalWindow::LeaveModalState (this=0xb168fa80)
    at /home/kinetik/work/trunk/mozilla/dom/src/base/nsGlobalWindow.cpp:5040
#1  0xb5c446b2 in ~nsAutoWindowStateHelper (this=0xbf8c0954)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsPromptService.cpp:85
#2  0xb5c3a4f1 in nsWindowWatcher::OpenWindowJSInternal (this=0x815b400, 
    aParent=0xb168fa80, 
    aUrl=0xb5c81d80 "chrome://global/content/commonDialog.xul", 
    aName=0xb5c819f3 "_blank", 
    aFeatures=0xb5c81aa8 "centerscreen,chrome,modal,titlebar", aDialog=1, 
    argv=0xb218c1c0, aCalledFromJS=0, _retval=0xbf8c0c00)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsWindowWatcher.cpp:944
#3  0xb5c3ab97 in nsWindowWatcher::OpenWindow (this=0x815b400, 
    aParent=0xb168fa80, 
    aUrl=0xb5c81d80 "chrome://global/content/commonDialog.xul", 
    aName=0xb5c819f3 "_blank", 
    aFeatures=0xb5c81aa8 "centerscreen,chrome,modal,titlebar", 
    aArguments=0xb2189e48, _retval=0xbf8c0c00)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsWindowWatcher.cpp:418
#4  0xb5c44a9d in nsPromptService::DoDialog (this=0xb52db7e0, 
    aParent=0xb168fa80, aParamBlock=0xb2189e48, 
    aChromeURL=0xb5c81d80 "chrome://global/content/commonDialog.xul")
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsPromptService.cpp:844


#0  nsGlobalWindow::LeaveModalState (this=0xb168fa80)
    at /home/kinetik/work/trunk/mozilla/dom/src/base/nsGlobalWindow.cpp:5040
#1  0xb5c446b2 in ~nsAutoWindowStateHelper (this=0xbf8c0d04)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsPromptService.cpp:85
#2  0xb5c45d53 in nsPromptService::Alert (this=0xb52db7e0, parent=0xb168fa80, 
    dialogTitle=0xbf8c0e30, text=0xbf8c0d9c)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsPromptService.cpp:213
#3  0xb5c2e586 in nsPrompt::Alert (this=0xb2189ae8, dialogTitle=0xbf8c0e30, 
    text=0xbf8c0d9c)
    at /home/kinetik/work/trunk/mozilla/embedding/components/windowwatcher/src/nsPrompt.cpp:178
#4  0xb4dcce65 in nsGlobalWindow::Alert (this=0xb168fa80, aString=@0xb159b5e8)
    at /home/kinetik/work/trunk/mozilla/dom/src/base/nsGlobalWindow.cpp:3639
Status: UNCONFIRMED → NEW
Ever confirmed: true
Blocks: 404828
Still visible with Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1a2pre) Gecko/20080811211528 Minefield/3.1a2pre ID:20080811211528

If you close the tab while loading http://www.mlb.com and have Silverlight installed, which gives high cpu load, you will get a panel with a question where to go. If the tab was closed before this assertion is listed twice:

###!!! ASSERTION: Uh, LeaveModalState() called w/o a reachable top window?: 'Error', file /Volumes/Daten/Projects/mozilla/source/mozilla/dom/src/base/nsGlobalWindow.cpp, line 5712

http://mxr.mozilla.org/mozilla-central/source/dom/src/base/nsGlobalWindow.cpp#5705
Version: unspecified → Trunk
This assertion also fires consistently when a tab that is displaying a
tab-modal prompt is closed while there is another tab-modal prompt open
in another tab, launched after the first one.
Blocks: 59314
Points of interest in the code:
nsGlobalWindow::EnterModalState()
http://mxr.mozilla.org/mozilla-central/source/dom/base/nsGlobalWindow.cpp#6569
Gets called a few instructions before LeaveModalState and has the same ASSERT, so likely docShellAsItem->GetSameTypeRootTreeItem(getter_AddRefs(root)); in nsGlobalWindow::GetTop(nsIDOMWindow** aTop) http://mxr.mozilla.org/mozilla-central/source/dom/base/nsGlobalWindow.cpp#3058 gets overwritten by another thread closing the top before the dialog gets closed.

Or OpenInternal
http://mxr.mozilla.org/mozilla-central/source/dom/base/nsGlobalWindow.cpp#7099
doesn't set some variables right.
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven't been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Component: DOM → DOM: Core & HTML
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.