X stops receiving mouse clicks

Peter Hutterer peter.hutterer at who-t.net
Tue Jun 9 17:20:17 PDT 2009


On Tue, Jun 09, 2009 at 04:48:06PM +0300, Marius Gedminas wrote:
> On Wed, May 13, 2009 at 06:25:05PM +0300, Marius Gedminas wrote:
> > On Wed, May 13, 2009 at 10:11:42AM +1000, Peter Hutterer wrote:
> > > On Tue, May 12, 2009 at 04:35:51PM +0300, Marius Gedminas wrote:
> > > > Are there any debugging facilities for finding out which X client has
> > > > the grab?
> > > > 
> > > > I once spent an hour killing all processes one by one until I found the
> > > > one responsible (gnome-settings-daemon):
> > > > http://mg.pov.lt/blog/xorg-snafu.html
> > > 
> > > if you have a second machine you can ssh+gdb in and look at
> > > CLIENT_BITS(inputInfo.pointer->deviceGrab.grab->resource). this should give
> > > you the client mask for the grab, and with xwininfo -root -children -all you
> > > can then match that up with a running client (that's from memory, no
> > > guarantees)
> > 
> > Thank you, this is more or less what I wanted to know in case the bug
> > strikes again (probably unlikely).
> 
> The Bug took over a coworker's machine.  After killing a couple of
> processes at random and failing to find the one that had the mouse grab,
> I installed Ubuntu's debug packages and ran
> 
>   sudo gdb `which Xorg` `pidof X`
>   (gdb) printf "%x", inputInfo.pointer->deviceGrab.grab->resource
> 
> (gdb doesn't know about CLIENT_BITS).
> 
> I got something like 0x2600000, and found a bunch of resources belonging
> to xchat-gnome that had IDs of the form 0x260xxxx in xwininfo output.
> 
> Unfortunately, killing xchat-gnome did not release the grab --- instead,
> reconnecting with gdb I got a different resource ID (one belonging to
> Skype).  Killing Skype repeated the story: different resource ID
> (Tomboy this time).  I gave up and told my coworker to restart X.

fwiw, we've had fun with a bug like this on a fedora 10 box and the culprit
was metacity. so far, we don't know whether it's metacity misbehaving or the
server dropping a ungrab request.

btw. the resource ID debugging works for active grabs, for passive grabs
it's a bit more complicated.

Cheers,
  Peter



More information about the xorg mailing list