On Thursday, May 29, 2014 10:19 CEST, Matthieu Herrb <[email protected]> wrote:
> On 29/5/14 9:09 , Sebastian Reitenbach wrote:
> > Hi,
> >
> > yesterday I updated my desktop from a 5.2 or 5.3, to a current snapshot,
> > now to find
> > the X server dying on me. See Xorg.0.log, xdm.log and dmesg below.
> >
> > So I went back, installed a 5.5 release, where starting X just worked.
> >
> > Afterward again, back to the snapshot.
> >
> > I built, xenocara with debug symbols, following instructions
> > in the README, giving me the following backtrace:
> >
> > (gdb) bt
> > #0 0x0000133e268f0fea in kill () at <stdin>:2
> > #1 0x0000133e26953239 in abort () at /usr/src/lib/libc/stdlib/abort.c:53
> > #2 0x0000133c21c42a6b in OsAbort () at
> > /home/xenocara/xserver/os/utils.c:1372
> > #3 0x0000133c21ab802c in ddxGiveUp (error=EXIT_ERR_ABORT) at
> > /home/xenocara/xserver/hw/xfree86/common/xf86Init.c:1078
> > #4 0x0000133c21ab8155 in AbortDDX (error=EXIT_ERR_ABORT) at
> > /home/xenocara/xserver/hw/xfree86/common/xf86Init.c:1122
> > #5 0x0000133c21c4c4d4 in AbortServer () at
> > /home/xenocara/xserver/os/log.c:770
> > #6 0x0000133c21c4ca9f in FatalError (f=0x133c21d7f5c8 "Caught signal %d
> > (%s). Server aborting\n")
> > at /home/xenocara/xserver/os/log.c:911
> > #7 0x0000133c21c3fc46 in OsSigHandler (signo=11, sip=0x7f7ffffbea30,
> > unused=0x7f7ffffbe950)
> > at /home/xenocara/xserver/os/osinit.c:147
> > #8 <signal handler called>
> > #9 0x0000133e2ede2ee2 in ?? ()
> > #10 0x0000133e2f806952 in _dl_bind (object=0x7f7ffffbee30, index=Variable
> > "index" is not available.
> > ) at /usr/src/libexec/ld.so/amd64/rtld_machine.c:404
> > #11 0x0000133e2f802811 in _dl_bind_start () at
> > /usr/src/libexec/ld.so/amd64/ldasm.S:143
> > #12 0x0000000100000160 in ?? ()
> > #13 0x0000133e00004000 in ?? ()
> > #14 0x0000000000000ff0 in ?? ()
> > #15 0x0000133e3188b800 in ?? ()
> > #16 0x00000000259d54a0 in ?? ()
> > #17 0x0000000000000000 in ?? ()
> > Current language: auto; currently asm
> >
> >
> > Due to the xdm.log and seen the GLX extension being loaded as the last
> > thing before the segfault, I changed the xorg.conf, adding:
> >
> > Section "Module"
> > Disable "glx"
> > EndSection
> >
> > on a restart of xdm, the x server again segfaulted, but without the line
> > about loading GLX extension.
> >
> > When I use the vesa driver instead of the nv driver, my X starts up, but
> > with lousy resolution :(
> >
> > any hint what I should try next?
> >
>
> Can you disable xdm, run the failing server and capture stdout and
> stderr. The fact that the backtrace goes through dl_* stuff seem to
> indicate a failure while loading a shared object. ld.so writes its
> errors to stderr and this doesn't get captured in Xorg.0.log
>
> There may be something intesting to read here.
>
> Otherwise build the xf86-video-nv with debugging symbols too and get a
> backtrace, if possible by running Xorg directly under gdb, rather than
> from a core file. From a remote login run sudo gdb Xorg and then 'r' ...
OK, running in gdb, it stopped here:
Program received signal SIGSEGV, Segmentation fault.
0x000003bc18f1feea in NVPreInit (pScrn=0x3bc16035800, flags=0)
at /home/xenocara/driver/xf86-video-nv/src/nv_driver.c:1929
1929 Mode->type = M_T_DRIVER;
(gdb) list
1924 /* If DFP, add a modeline corresponding to its panel size */
1925 if (pNv->FlatPanel && !pNv->Television && pNv->fpWidth &&
pNv->fpHeight) {
1926 DisplayModePtr Mode;
1927
1928 Mode = xf86CVTMode(pNv->fpWidth, pNv->fpHeight, 60.00, TRUE,
FALSE);
1929 Mode->type = M_T_DRIVER;
1930 pScrn->monitor->Modes = NVModesAdd(pScrn->monitor->Modes, Mode);
1931
1932 if (!config_mon_rates) {
1933 if (!Mode->HSync)
(gdb) bt
#0 0x000003bc18f1feea in NVPreInit (pScrn=0x3bc16035800, flags=0)
at /home/xenocara/driver/xf86-video-nv/src/nv_driver.c:1929
#1 0x000003ba112b6991 in InitOutput (pScreenInfo=0x3ba118e0660, argc=1,
argv=0x7f7ffffde6e8)
at /home/xenocara/xserver/hw/xfree86/common/xf86Init.c:597
#2 0x000003ba112603da in dix_main (argc=1, argv=0x7f7ffffde6e8,
envp=0x7f7ffffde6f8)
at /home/xenocara/xserver/dix/main.c:200
#3 0x000003ba112414e7 in main (argc=1, argv=0x7f7ffffde6e8,
envp=0x7f7ffffde6f8)
at /home/xenocara/xserver/dix/stubmain.c:34
after setting a breakpoint on xf86CVTMode, I stepped through it, and
at the end, Mode was:
(gdb)
295 return Mode;
(gdb) print Mode
$3 = (DisplayModeRec *) 0x3bc16033800
(gdb) print *Mode
$4 = {prev = 0x0, next = 0x0, name = 0x3bc12282ac0 "1920x1200", status =
MODE_OK, type = 0,
Clock = 154000, HDisplay = 1920, HSyncStart = 1968, HSyncEnd = 2000, HTotal =
2080, HSkew = 0,
VDisplay = 1200, VSyncStart = 1203, VSyncEnd = 1209, VTotal = 1235, VScan =
0, Flags = 9,
ClockIndex = 0, SynthClock = 0, CrtcHDisplay = 0, CrtcHBlankStart = 0,
CrtcHSyncStart = 0,
CrtcHSyncEnd = 0, CrtcHBlankEnd = 0, CrtcHTotal = 0, CrtcHSkew = 0,
CrtcVDisplay = 0,
CrtcVBlankStart = 0, CrtcVSyncStart = 0, CrtcVSyncEnd = 0, CrtcVBlankEnd = 0,
CrtcVTotal = 0,
CrtcHAdjusted = 0, CrtcVAdjusted = 0, PrivSize = 0, Private = 0x0, PrivFlags
= 0, HSync = 74.0384598,
VRefresh = 59.9501724}
(gdb)
(gdb) n
296 }
(gdb)
NVPreInit (pScrn=0x3bc16035800, flags=0) at
/home/xenocara/driver/xf86-video-nv/src/nv_driver.c:1929
1929 Mode->type = M_T_DRIVER;
(gdb) print Mode
$5 = 0x16033800
(gdb) print *Mode
Cannot access memory at address 0x16033800
(gdb)
grepping through the drivers, I found a similar initialization of
DisplayModePtr in
xf86-video-savage/src/savage_driver.c in SavageAddPanelMode
but there it states above: /* borrowed from nv */
So maybe this driver suffers the same problem?
Sebastian
>
>
> --
>
> Matthieu Herrb