On Sam, 2002-10-26 at 01:03, David Dawes wrote: > On Fri, Oct 25, 2002 at 01:15:15PM +0200, Michel Dänzer wrote: > >On Don, 2002-10-24 at 14:25, David Dawes wrote: > >> On Thu, Oct 24, 2002 at 02:00:48PM +0200, Michel Dänzer wrote: > >> >On Don, 2002-10-24 at 13:52, Alan Hourihane wrote: > >> >> On Thu, Oct 24, 2002 at 01:47:01PM +0200, Michel Dänzer wrote: > >> >> > > That certainly shouldn't be needed for shared entities. Where exactly > >> >> > > was it crashing ? > >> >> > > >> >> > XAA dereferences pScrn->pScreen to track the state of shared entities. > >> >> > RADEONScreenInit() calls other radeon driver functions which call > >> >> > info->accel->Sync(), but the driver independent code only sets pScrn->pScreen > >> >> > after ScreenInit(). Boom. > >> >> > >> >> A backtrace would be useful. > >> > >> The backtrace would be useful for showing the exact call sequence leading > >> to the SEGV, and may help in determining if the problem should be fixed > >> in a different way. > > > >Kevin Puetz sent me this one: > > > >0x081952ca in XAAStateWrapSync (pScrn=0x8870a80) at xaaStateChange.c:313 > >313 GET_STATEPRIV_PSCRN(pScrn); > >(gdb) bt > >#0 0x081952ca in XAAStateWrapSync (pScrn=0x8870a80) at xaaStateChange.c:313 > >#1 0x080fdae5 in RADEONLoadPalette (pScrn=0x8870a80, numColors=256, >indices=0x88bc9e8, colors=0x88bcdf0, pVisual=0x8886d88) at radeon_driver.c:2429 > >#2 0x0829dabb in CMapRefreshColors (pmap=0x88b6b80, defs=256, indices=0x88bc9e8) >at xf86cmap.c:619 > >#3 0x0829d1c7 in CMapReinstallMap (pmap=0x88b6b80) at xf86cmap.c:493 > >#4 0x0829d127 in CMapSetDGAMode (index=0, num=0, dev=0x0) at xf86cmap.c:470 > >#5 0x08287082 in DGAShutdown () at xf86DGA.c:475 > >#6 0x0826ee91 in ddxGiveUp () at xf86Init.c:1082 > >#7 0x0826efaf in AbortDDX () at xf86Init.c:1145 > >#8 0x0830a9a8 in AbortServer () at utils.c:436 > >#9 0x0830c65f in FatalError (f=0x8795d40 "Caught signal %d. Server aborting\n") >at utils.c:1402 > >#10 0x08289c81 in xf86SigHandler (signo=11) at xf86Events.c:1085 > >#11 0x40079518 in sigaction () from /lib/libc.so.6 > >#12 0x080fdae5 in RADEONLoadPalette (pScrn=0x8870a80, numColors=256, >indices=0x88bc9e8, colors=0x88bcdf0, pVisual=0x8886d88) at radeon_driver.c:2429 > >#13 0x0829dabb in CMapRefreshColors (pmap=0x88b6b80, defs=256, indices=0x88bc9e8) >at xf86cmap.c:619 > >#14 0x0829d1c7 in CMapReinstallMap (pmap=0x88b6b80) at xf86cmap.c:493 > >#15 0x0829cf0c in CMapInstallColormap (pmap=0x88b6b80) at xf86cmap.c:418 > >#16 0x0829c726 in xf86HandleColormaps (pScreen=0x8886008, maxColors=256, >sigRGBbits=8, loadPalette=0x80fda88 <RADEONLoadPalette>, setOverscan=0, flags=3) at >xf86cmap.c:196 > >#17 0x080ff0c9 in RADEONScreenInit (scrnIndex=0, pScreen=0x8886008, argc=1, >argv=0xbffffd14) at radeon_driver.c:2966 > >#18 0x082ec94a in AddScreen (pfnInit=0x80fe0ac <RADEONScreenInit>, argc=1, >argv=0xbffffd14) at main.c:768 > >#19 0x0826e893 in InitOutput (pScreenInfo=0x885a4a0, argc=1, argv=0xbffffd14) at >xf86Init.c:819 > >#20 0x082ebbc7 in main (argc=1, argv=0xbffffd14, envp=0xbffffd1c) at main.c:380 > > So it's crashing in RADEONLoadPalette, not in XAA. I imagine it's this > line: > > #ifdef XF86DRI > if (info->CPStarted) DRILock(pScrn->pScreen, 0); > #endif
No, I just double ckecked, the CP is only started in RADEONDRIFinishScreenInit(), info->CPStarted is FALSE before. It probably crashes in the XAA GET_STATEPRIV_PSCRN() macro when info->accel->Sync() is called. (Funny it doesn't show up in the backtrace either way) > >> >What's the problem with setting this pointer, anyway? > >> > >> If pScrn->pScreen must be dereferenced before the end of ScreenInit, then > >> you need to set it. The driver independent code can't set it before > >> it already does (it isn't allocated yet), > > > >But ScreenInit() seems to have both pScreen and pScrn from the beginning? > > Yes, but the XFree86 common layer code (InitOutput) doesn't. It calls > AddScreen(), which allocates pScreen and then calls the driver's > ScreenInit. AddScreen() is DIX code that doesn't know about pScrn. > The driver's ScreenInit is the first function that knows about and sees > both pScreen and pScrn. I see, thanks. -- Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer XFree86 and DRI project member / CS student, Free Software enthusiast ------------------------------------------------------- This sf.net email is sponsored by: Influence the future of Java(TM) technology. Join the Java Community Process(SM) (JCP(SM)) program now. http://ads.sourceforge.net/cgi-bin/redirect.pl?sunm0004en _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel