[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: [wmx] Bug report: exit/crash

Stefan `Sec` Zehl - Sun May 16 00:45:57 1999

On Thu, Apr 29, 1999 at 06:38:51AM +1000, Andrew Reilly wrote:
> Hi there,
> I haven't had a chance to poke around in the code yet, so all I can do is
> describe symptoms.
> I haven't seen any mention of the wide, short "incognito" windows that I
> get, so I'll have to assume that that's something peculiar to my setup.
> Yesterday, an application exited _while_ its name was being displayed in
> the window list menu.  When I let go of the menu, wmx crashed.  In the hope
> that it helps someone, here's the stack trace:

while i couldn't reproduce this exact bug, I found another
open an xterm, type 'sleep 3;exit\n' now bring up the root menu, and
wait till the window disappears. When it's gone, select it from the
list. Now release the mousebutton, and immideatly change to another
channel with Alt+F<x>. Voila.

While it is clear to me what happens (wmx tries to hide the nonexistent
window) I'm not sure on how to prevent this.

I know caputured (m_window == NULL) as a test (as this gets cleared
when the window exits).

Let me know if that fixes your problem, too.

Failure is not an option. It comes bundled with your Microsoft product.
Index: Client.h
RCS file: /home/sec/.cvstree/repository/wmx/Client.h,v
retrieving revision 1.5
diff -u -r1.5 Client.h
--- Client.h	1999/01/20 22:10:09	1.5
+++ Client.h	1999/05/15 22:38:24
@@ -51,6 +51,7 @@
     Boolean isHidden()     { return (m_state == IconicState);    }
     Boolean isWithdrawn()  { return (m_state == WithdrawnState); }
     Boolean isNormal()     { return (m_state == NormalState);    }
+    Boolean isKilled()     { return (m_window == None);          }
     Boolean isTransient()  { return (m_transient != None);       }
     Boolean isSticky()    { return m_sticky; }
     Window  transientFor() { return m_transient; }
Index: Menu.C
RCS file: /home/sec/.cvstree/repository/wmx/Menu.C,v
retrieving revision 1.7
diff -u -r1.7 Menu.C
--- Menu.C	1999/02/08 23:10:25	1.7
+++ Menu.C	1999/05/15 22:44:35
@@ -467,7 +467,7 @@
 	if (selecting < m_nHidden) cl->unhide(True);
 	else if (selecting < m_nItems) {
+	    if (!cl->isKilled()) // Don't activate nonexistant windows
 	    if (CONFIG_CLICK_TO_FOCUS) cl->activate();
 	    else cl->mapRaised();