Closed Bug 10511 Opened 25 years ago Closed 24 years ago

crash when closing browser or Composer window via keybinding

Categories

(Core :: DOM: UI Events & Focus Handling, defect, P3)

PowerPC
Mac System 8.5
defect

Tracking

()

VERIFIED DUPLICATE of bug 53838

People

(Reporter: Brade, Assigned: joki)

References

Details

(Keywords: crash, regression)

on Mac, add the following keybinding (if it isn't already present):
in mozilla/editor/ui/composer/content/EditorAppShell.xul, below </script> add:
 <keyset>
   <key id="wcmdkey" disabled="false" shift="false" command="true" alt="false"
key="w" onkeypress="EditorClose()"/>
 </keyset>

to reproduce:
(1) bring up editor from Task menu
(2) click in editor window to give it focus
(3) press Command-W to close (Control-W on other platforms)
Crash in nsEventListenerManager::HandleEvent (this and the xuldoc have been
freed)
Status: NEW → ASSIGNED
I think I may know what this one is.  We currently hold onto the world via the
PresShell for event dispatching so it doesn't die beneath us.  But when we
added the bubbling to chrome thing we're now passing the event out of the
current PresShell and therefore outside the safety zone.  As a result, when we
close the window from the ctrl-w we wipe out the xul doc and its
listenermanager while we're still processing and end up dying inside the
listenermanager with a bad pointer.

So for possible solutions I guess the first that comes to mind is we could
addref the chromedocument pointer in globalwindow before passing anything to
it.  Or we can try to find a way to safe its presshell.  Thoughts?
see bug #10515 for enabling Control-W on non-Macintosh platforms (plus you'll
need to add the following to nsEventStateManager.cpp)
around line 123 add:
    case NS_KEY_PRESS:
      {
        nsKeyEvent *keyEvent = (nsKeyEvent *)aEvent;
        if (keyEvent->isControl) {
          keyEvent->charCode += 64;
        }
      }
      break;
brade, is this particular bug Mac specific?
o, Joki was able to make some hacks to his build to be able to reproduce this bug

on Windows.  (bug #10515 is for part of the code to enable the keybinding code so

this bug can be reproduced on non-Macintosh platforms)
Blocks: 15693
Severity: normal → critical
what's the status of this bug? joki -- do you have a milestone in mind?
I'm closing bug 16867 as a dupe of this but I'm copying the stack trace from that bug
over here.

Result: crash in nsEventListenerManager::HandleEvent() double-freeing
mKeyListener. Stack below

nsEventListenerManager::HandleEvent(nsIPresContext & {...}, nsEvent *
0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4, nsEventStatus &
nsEventStatus_eIgnore) line 814 + 9 bytes
XULDocumentImpl::HandleDOMEvent(XULDocumentImpl * const 0x01cb3e30,
nsIPresContext & {...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8,
unsigned int 4, nsEventStatus & nsEventStatus_eIgnore) line 2211
nsXULElement::HandleDOMEvent(nsXULElement * const 0x01d47ca0, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4,
nsEventStatus & nsEventStatus_eIgnore) line 2746 + 39 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x01f08d90, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4,
nsEventStatus & nsEventStatus_eIgnore) line 2744
nsXULElement::HandleDOMEvent(nsXULElement * const 0x01f0a2c0, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4,
nsEventStatus & nsEventStatus_eIgnore) line 2744
nsXULElement::HandleDOMEvent(nsXULElement * const 0x01f0bce0, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4,
nsEventStatus & nsEventStatus_eIgnore) line 2744
nsXULElement::HandleDOMEvent(nsXULElement * const 0x01f0b6c0, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 4,
nsEventStatus & nsEventStatus_eIgnore) line 2744
GlobalWindowImpl::HandleDOMEvent(GlobalWindowImpl * const 0x0230f054,
nsIPresContext & {...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8,
unsigned int 4, nsEventStatus & nsEventStatus_eIgnore) line 2891
nsDocument::HandleDOMEvent(nsDocument * const 0x02313530, nsIPresContext &
{...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x0012f8f8, unsigned int 1,
nsEventStatus & nsEventStatus_eIgnore) line 2379
nsHTMLHtmlElement::HandleDOMEvent(nsHTMLHtmlElement * const 0x023131ac,
nsIPresContext & {...}, nsEvent * 0x0012fbc8, nsIDOMEvent * * 0x00000000,
unsigned int 1, nsEventStatus & nsEventStatus_eIgnore) line 188 + 41 bytes
PresShell::HandleEvent(PresShell * const 0x02392554, nsIView * 0x023a51c0,
nsGUIEvent * 0x0012fbc8, nsEventStatus & nsEventStatus_eIgnore) line 2164 + 39
bytes
nsView::HandleEvent(nsView * const 0x023a51c0, nsGUIEvent * 0x0012fbc8,
unsigned int 8, nsEventStatus & nsEventStatus_eIgnore, int & 0) line 834
nsView::HandleEvent(nsView * const 0x023a4210, nsGUIEvent * 0x0012fbc8,
unsigned int 8, nsEventStatus & nsEventStatus_eIgnore, int & 0) line 819
nsView::HandleEvent(nsView * const 0x023a42a0, nsGUIEvent * 0x0012fbc8,
unsigned int 8, nsEventStatus & nsEventStatus_eIgnore, int & 0) line 819
nsView::HandleEvent(nsView * const 0x02392930, nsGUIEvent * 0x0012fbc8,
unsigned int 28, nsEventStatus & nsEventStatus_eIgnore, int & 0) line 819
nsViewManager::DispatchEvent(nsViewManager * const 0x02392e30, nsGUIEvent *
0x0012fbc8, nsEventStatus & nsEventStatus_eIgnore) line 1739
HandleEvent(nsGUIEvent * 0x0012fbc8) line 63
nsWindow::DispatchEvent(nsWindow * const 0x023927f4, nsGUIEvent * 0x0012fbc8,
nsEventStatus & nsEventStatus_eIgnore) line 401 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012fbc8) line 422
nsWindow::DispatchKeyEvent(unsigned int 133, unsigned short 0, unsigned int 13)
line 2049 + 15 bytes
nsWindow::OnKeyDown(unsigned int 13, unsigned int 28) line 2249 + 25 bytes
nsWindow::ProcessMessage(unsigned int 256, unsigned int 13, long 1835009, long
* 0x0012fdf4) line 2598 + 40 bytes
nsWindow::WindowProc(HWND__ * 0x006405f2, unsigned int 256, unsigned int 13,
long 1835009) line 579 + 27 bytes
USER32! 77e71268()
*** Bug 16867 has been marked as a duplicate of this bug. ***
Summary: crash when closing editor window via keybinding → [CRASH] crash when closing editor window via keybinding
Marking [CRASH].
Target Milestone: M13
Moving crash bugs into M13.
Target Milestone: M13 → M14
Mass-moving excess bugs to M14
Adding "crash" keyword to all known open crasher bugs.
Keywords: crash
Summary: [CRASH] crash when closing editor window via keybinding → crash when closing editor window via keybinding
I left this open as long as I did because I thought I remembered a continuing 
problem.  However we seem to have long since gotten past this so closing as 
fixed.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Keywords: verifyme
Verified fixed.
Status: RESOLVED → VERIFIED
reopen bug; I am seeing this again.
nominate for nsbeta3, rtm, etc since this is a nasty regression which users may
run into a lot.
Status: VERIFIED → REOPENED
Keywords: verifymensbeta3, regression, rtm
Resolution: FIXED → ---
note: my crashes came by closing the browser window with command-W on Macintosh
Summary: crash when closing editor window via keybinding → crash when closing browser or Composer window via keybinding
Target Milestone: M14 → ---

*** This bug has been marked as a duplicate of 53838 ***
Status: REOPENED → RESOLVED
Closed: 25 years ago24 years ago
Resolution: --- → DUPLICATE
Verified dupe.
Status: RESOLVED → VERIFIED
Component: Event Handling → User events and focus handling
You need to log in before you can comment on or make changes to this bug.