[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