X server 1.8.0 crashes on termination

Nix nix at esperi.org.uk
Sat Apr 17 16:11:42 PDT 2010

So far, every time I've quit X 1.8.0 (1.8-stable tip of tree), it's
coredumped and left my console unusable until I restart. (I'm using the
tip of the xf86-video-ati tree, and KMS, both of which worked fine with
1.7.5. Obviously I've recompiled all the drivers I'm usingt, or X
wouldn't work at all...)

The backtrace differs depending on whether auditing is enabled or not.

With auditing on, we are hit with a segfault here:

#0  0x00007f7e06148985 in _xstat () from /lib/libc.so.6
#1  0x00007f7e061198d0 in __tzfile_read () from /lib/libc.so.6
#2  0x00007f7e06118c8a in tzset_internal () from /lib/libc.so.6
#3  0x00007f7e06118df9 in __tz_convert () from /lib/libc.so.6
#4  0x00007f7e06117439 in ctime () from /lib/libc.so.6
#5  0x00000000004533c8 in AuditPrefix ()
#6  0x0000000000453956 in VAuditF ()
#7  0x0000000000453add in AuditF ()
#8  0x000000000043e5c6 in CloseDownClient ()
#9  0x0000000000443af8 in Dispatch ()
#10 0x0000000000420dc5 in main ()

With it off, I see this instead:

Program received signal SIGTERM, Terminated.
0x000000000042904c in FreeClientResources ()
(gdb) bt
#0  0x000000000042904c in FreeClientResources ()
#1  0x000000000043e4c2 in CloseDownClient ()
#2  0x0000000000443af8 in Dispatch ()
#3  0x0000000000420dc5 in main ()

which might look like normal termination, except that
FreeClientResources() of course does not contain an exit(), and the
console is still unusable.

I suspect a double-free() somewhere, and/or heap corruption.

I'll kick on malloc() debugging and look more closely (assuming that
works: in my experience it often introduces more problems than you might
wish for).

More information about the xorg mailing list