X Test Suite Redux

Jon TURNEY jon.turney at dronecode.org.uk
Wed Mar 24 12:12:42 PDT 2010

On 24/03/2010 17:33, Dan Nicholson wrote:
> Applied, thanks.
>> Is it just me, or does test XAllowEvents (19/29) currently crash the
>> X server in DeliverGrabbedEvent()? (tested with both 1.7.5 and git
>> master; a 1.6.0 X server I have around seems to survive that test,
>> though)
> I haven't checked that test lately, but I've been running the suite on
> a 1.7.x series, and I haven't seen the server crash.

Odd. I probably should have mentioned that 1.7.6-1.fc12 crashes as well, so 
it's not XWin-specific. Here's a backtrace:

$ gdb --args /opt/wip/jhbuild/install/bin/X :1
GNU gdb (cygwin-special)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-cygwin"...
(gdb) r
Starting program: /opt/wip/jhbuild/install/bin/X :1
[New thread 5888.0xd74]
[New thread 5888.0xc08]
InitConnectionLimits: MaxClients = 255
Welcome to the XWin X Server
Vendor: The X.Org Foundation
Release: (10799902)
Tag: xorg-server-

Program received signal SIGSEGV, Segmentation fault.
0x0056e4d4 in DeliverGrabbedEvent (event=0x22c434, thisDev=0x11631f8, 
deactivateGrab=0) at /opt/wip/jhbuild/git/xorg/xserver/dix/events.c:3977
3977                    if ((dev->deviceGrab.sync.state == 
(gdb) list
3972                for (dev = inputInfo.devices; dev; dev = dev->next)
3973                {
3974                    if (dev == thisDev)
3975                        continue;
3976                    FreezeThaw(dev, TRUE);
3977                    if ((dev->deviceGrab.sync.state == 
3978                        (CLIENT_BITS(grab->resource) ==
3979                         CLIENT_BITS(dev->deviceGrab.sync.other->resource)))
3980                        dev->deviceGrab.sync.state = FROZEN_NO_EVENT;
3981                    else
(gdb) p dev
$1 = (DeviceIntPtr) 0x11634b0
(gdb) p grab
$2 = (GrabPtr) 0x1163234
(gdb) p dev->deviceGrab.sync.other
$3 = (GrabPtr) 0x0

I don't know if this just needs a check that sync.other is non-null before we 
try and dereference it, or if that indicates a deeper problem...

More information about the xorg-devel mailing list