Bug#632549: Xephyr asserts and aborts during startup
I tried 2:1.10.2.902-1 yet I can still reproduce the assertion.
On Sun, Jul 03, 2011 at 07:05:31PM +0200, Cyril Brulebois wrote:
> > Is there a dbg package somewhere ? I can then do some debugging.
>
> Apparently, no debug symbols for Xephyr, so you could rebuild the server
> with: DEB_BUILD_OPTIONS="noudeb debug noopt nostrip", then sudo debi -u
> (source package: xorg-server).
I poked around a bit:
Program received signal SIGABRT, Aborted.
0xb7b37667 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) where
#0 0xb7b37667 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0xb7b3aa52 in abort () at abort.c:92
#2 0xb7b308f7 in __assert_fail (assertion=0x81f8f62 "key->initialized",
file=0x81f8eac "../../../../include/privates.h", line=117,
function=0x81f94a6 "dixGetPrivateAddr") at assert.c:81
#3 0x080607c2 in dixGetPrivateAddr (key=<value optimized out>, privates=<value optimized out>)
at ../../../../include/privates.h:117
#4 0x0806e9ac in dixGetPrivateAddr (a_screen=0x82a04d0) at ../../../../include/privates.h:117
#5 dixGetPrivate (a_screen=0x82a04d0) at ../../../../include/privates.h:132
#6 dixLookupPrivate (a_screen=0x82a04d0) at ../../../../include/privates.h:162
#7 ephyrDRIScreenInit (a_screen=0x82a04d0) at ../../../../hw/kdrive/ephyr/ephyrdriext.c:114
#8 ephyrDRIExtensionInit (a_screen=0x82a04d0) at ../../../../hw/kdrive/ephyr/ephyrdriext.c:1404
#9 0x0806542b in ephyrInitScreen (pScreen=0x82a04d0) at ../../../../hw/kdrive/ephyr/ephyr.c:658
#10 0x080c87e5 in KdScreenInit (index=0, pScreen=0x82a04d0, argc=2, argv=0xbffff3b4)
at ../../../../hw/kdrive/src/kdrive.c:1010
#11 0x0809315d in AddScreen (pfnInit=0x80c8580 <KdScreenInit>, argc=2, argv=0xbffff3b4)
at ../../dix/dispatch.c:3890
#12 0x080c8d08 in KdAddScreen (pScreenInfo=0x82852a0, argc=2, argv=0xbffff3b4)
at ../../../../hw/kdrive/src/kdrive.c:1191
#13 KdInitOutput (pScreenInfo=0x82852a0, argc=2, argv=0xbffff3b4)
at ../../../../hw/kdrive/src/kdrive.c:1258
#14 0x080631c5 in main (argc=2, argv=0xbffff3b4, envp=0xbffff3c0) at ../../dix/main.c:205
(gdb) frame 4
#4 0x0806e9ac in dixGetPrivateAddr (a_screen=0x82a04d0) at ../../../../include/privates.h:117
Seems to come from ephyrDRIScreenInit in ephyrdriext.c:
screen_priv=GET_EPHYR_DRI_SCREEN_PRIV (a_screen);
Which goes up a bit until:
static DevPrivateKeyRec ephyrDRIScreenKeyRec;
#define ephyrDRIScreenKey (&ephyrDRIScreenKeyRec)
#define GET_EPHYR_DRI_SCREEN_PRIV(screen) ((EphyrDRIScreenPrivPtr) \
dixLookupPrivate(&(screen)->devPrivates, ephyrDRIScreenKey))
However, I completely fail to see where ephyrDRIScreenKeyRec is being initialized.
Cheers,
--
GPG-Key: 0xA3FD0DF7 - 9F73 032E EAC9 F7AD 951F 280E CB66 8E29 A3FD 0DF7
Debian User and Developer.
Homepage: www.foolab.org
Reply to: