[lug] Help with window manager "lockups"

Zan Lynx zlynx at acm.org
Mon Aug 18 14:58:55 MDT 2008


Michael J. Hammel wrote:
> I need some help trying to figure out how to get around a problem with
> my desktop.  This one just has me stumped.
> 
> I wrote about this previously and mistakenly blamed Metacity (though
> metacity's reaction to the problem was still bad and was enough to make
> me switch to XFce on this machine).  I'm having a window manager
> "lockup" that prevents any mouse clicks or autoraise/autofocus from
> being honored and keyboard input from allowing me to move between
> desktop workspaces.  The problem is intermittent:  happens at what
> appears to be random times though lately it seems to happen when I
> change workspaces to where Evolution and Firefox are running side by
> side in a single workspace spanning dual monitors. I have no idea if
> these apps are affecting the problem or not.
> 
> The problem happens on just one machine running F9.  That machine has an
> NVidia card and is using the NVidia driver (not the open source driver).
> Other machines running F9 using other video drivers have not had the
> problem.  I've upgraded the NVidia driver to the latest driver with no
> impact on the problem.
> 
> The desktop is still running - I can pop up windows from other clients
> but can't give them focus.  The window with focus does not accept
> keyboard input.  I can kill the X server with Ctrl-Alt-Backspace.  The
> problem occurs with GNOME (metacity), XFce (xfwm4) and KDE (kdewm).
> It's always the exact same symptoms:  no focus change, no keyboard input
> except for killing the server.  Panel apps like the clock and system
> monitors (with graphs) continue to run.  The mouse also moves freely
> around the displayed windows.  There is nothing in the X or system logs
> showing any problem has occurred.
> 
> Considering the exact same problem occurs with three different window
> managers I don't think its desktop or wm related.  It might be the
> USB-based wireless keyboard/mouse I use (Logitech S510) but I'd expect
> the mouse to stop working completely or the keyboard to not be able to
> send the server kill sequence.    It could be the memory in the system
> is dying but I'd expect random errors in that case - not the exact same
> error each time.
> 
> I'm thinking it might be USB ports on this Dell.  I've seen errors in
> the system logs from the USB subsystem in the past on this box.  I
> suppose a USB hickup left the window manager in a state it can't get out
> of, though to have three different window managers hit the same state
> seems odd.  There must be a common library at fault here (not recovering
> from the USB fault).  I just don't know which one.  And I'm not even
> sure if the USB is to blame here.  I'm just running out of other ideas.
> 
> I really hate having to kill the server every time this happens,
> especially since it's happening about once a day now.  Fortunately
> Firefox, Evolution and vi recover from these crashes rather well.  My
> next guess is to replace the wireless keyboard/mouse, but the
> replacement will *also* be USB so I'm not sure that's going to help any.
> There are no PS/2 connections on this box.
> 
> Anyone have any other suggestions?

I've heard of rather serious bugs in eSound and PulseAudio on FC9
causing this sort of problem.  Apparently if a program tries to play a
sound and the pulseaudio server is not working, it goes into an infinite
loop, freezing whatever application tried to make noise.

I ran into this on my Gentoo laptop since I foolishly switched to
PulseAudio on it.  I don't know why, since it's no better than using
ALSA/dmix directly.  I suppose I was hoping for something impressive.

You should be able to see if this is the problem by using SSH to log
into the FC9 machine or switching to a text terminal, then do "ps xa" to
find the metacity process, then "strace -p [metacity-pid]".  If you see
it spamming write and SIGPIPE, this is the problem.

I manually applied a patch to fix mine.  The patch makes esound break
out of the loop when it gets SIGPIPE.

This patch is against esound 0.2.39:
--- esound-0.2.39/esdlib.c	2008-07-15 09:35:15.000000000 -0600
+++ /tmp/esdlib.c	2008-08-17 09:45:31.664488091 -0600
@@ -152,6 +152,8 @@
 		
 		if (n > 0)
 			nwritten += n;
+		else
+			break;
 	} while (nwritten < buflen);
 	
 	fcntl (fd, F_SETFL, flags);



More information about the LUG mailing list