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 6.8.0.20080328-cvs (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: 1.7.99.902 (10799902)
Tag: xorg-server-1.7.99.902-25-ge086b99
[...]

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 == FREEZE_BOTH_NEXT_EVENT) &&
(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 == FREEZE_BOTH_NEXT_EVENT) &&
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...
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to