Leif Delgass wrote:

> On Fri, 5 Jul 2002, Jens Owen wrote:
> 
> [snip]
> 
> 
>>However, I think you may be tickling a latent bug in the DRI.  It's 
>>possible that all the other drives have just avoided this bug so far.
>>
>>I looked at DRICloseScreen and I don't see that the DRIClipNotify 
>>wrapper is being removed.  There are other unwraps missing as well.
>>
>>Can you send me a back trace from a static debuggable server?  Let me 
>>know if you need help building this.
>>
> 
> Could you tell me how to build a static server or point me to a HOWTO?


The xc/config/cf/host.def in the DRI tree is setup to easily modified to 
build a debuggable server.  Attached is a copy of a modified host.def 
file I used for debugging an i810 problem.  You'll probably need to add 
the mach64 driver to these options.

 
> Meanwhile, here's a backtrace from the X server built from the branch.  It 
> looks like the ClipNotify wrapper is being called when pDRIPriv is null, 
> though I'm not sure why I wouldn't have run into this before...
> 
> Program received signal SIGSEGV, Segmentation fault.
> DRIClipNotify (pWin=0x85d3a60, dx=0, dy=0) at dri.c:1732
> 1732        if(pDRIPriv->wrap.ClipNotify) {
> (gdb) bt
> #0  DRIClipNotify (pWin=0x85d3a60, dx=0, dy=0) at dri.c:1732
> #1  0x080c9009 in MapWindow (pWin=0x85d3a60, client=0x81d56a8) at window.c:2864
> #2  0x080c5ee8 in InitRootWindow (pWin=0x85d3a60) at window.c:522
> #3  0x080bf39c in main (argc=4, argv=0xbffff9d4, envp=0xbffff9e8) at main.c:439
> #4  0x40072647 in __libc_start_main (main=0x80bee9c <main>, argc=4, 
>     ubp_av=0xbffff9d4, init=0x806cc08 <_init>, fini=0x8174c80 <_fini>, 
>     rtld_fini=0x4000dcd4 <_dl_fini>, stack_end=0xbffff9cc)
>     at ../sysdeps/generic/libc-start.c:129
> (gdb) info locals
> pWin = 0x85d3a60
> pScreen = 0x85d3748
> pDRIPriv = 0x0
> pDRIDrawablePriv = 0x0


Yes, it looks like the DRI initialization process was started, causing 
the DRI wrappers to be put in place; then, something caused DRI 
initialization to fail, but the failure handling code does not remove 
the wrappers.

I believe I need to unwrap the DRI routines in DRICloseScreen.  I'd like 
to fix this case and ask you to test with what you've got since it's 
hard to test these unusual failure cases when everythings working properly.

It's still curious no other drivers have had this problem.  Either 
nobody else has gone done these failure cases, or I'm barking up the 
wrong tree.

Can you verify that we are indeed calling DRICloseScreen by putting a 
breakpoint at that routine and sending me a backtrace at that point?

Thanks,
Jens

-- 
                                /\
          Jens Owen            /  \/\ _
   [EMAIL PROTECTED]  /    \ \ \   Steamboat Springs, Colorado
/*
 * Set this for each DRI branch.  It will be appended to the XFree86 version
 * information.
 */
#define XFree86CustomVersion "DRI trunk"

#define DefaultGcc2AxpOpt -O2 -mcpu=ev6
#define DefaultGcc2PpcOpt -O2 -mcpu=750
#define DefaultGcc2i386Opt -O2
#if defined(AlphaArchitecture)
#  define LibraryCDebugFlags -O2 -mcpu=ev6
#elif defined(PpcArchitecture)
#  define LibraryCDebugFlags -O2 -mcpu=750
#else
#  define LibraryCDebugFlags -O2
#endif

#define BuildXFree86ConfigTools YES

#if defined(PpcArchitecture)

#define XF86CardDrivers ati
#define DriDrivers r128 radeon

#else

#define XF86CardDrivers tdfx i810 mga ati glint vga
#define DriDrivers tdfx mga i810 r128 radeon gamma i830 /* sis ffb */

#endif

#define GccWarningOptions -Wall -Wpointer-arith -Wstrict-prototypes \
                          -Wmissing-prototypes -Wmissing-declarations \
                          -Wnested-externs
#define DefaultCCOptions -ansi GccWarningOptions -pipe -g

#define NormalLibGlx NO

#define BuildXF86DRI YES

/* To do profiling of the dynamically loaded 'xyz_dri.so' object, turn
 * this on.
 * Use 'xc/lib/GL/makeprofile.sh' to make it work.
 */
/* #define GlxSoProf YES */

#ifdef GlxSoProf
#  undef DefaultCCOptions
#  define DefaultCCOptions -ansi GccWarningOptions -pipe -g -p
#endif

/* Optionally turn these on for debugging */
/* #define GlxBuiltInTdfx YES */
#define GlxBuiltInI810 YES
/* #define GlxBuiltInMga YES */
/* #define GlxBuiltInR128 YES */
/* #define GlxBuiltInRadeon YES */
#define DoLoadableServer NO

/* Optionally turn this on to change the place where you install the build.
 * Warning: trailing blanks will cause build failures.
 */
/* #define ProjectRoot /usr/X11R6-DRI */

/* Optionally turn this on to force the kernel modules to build */
/* #define BuildXF86DRM YES */

#define XF86AFB NO

#define XnestServer NO
#define XVirtualFramebufferServer NO

/*
 * Don't change anything below or the build will fail.
 */
#define BuildServersOnly YES
#define BuildLibrariesForXServers NO
#define BuildLibrariesForConfigTools NO
#define BuildXIE NO
#define BuildPexExt NO
#define XprtServer NO
#define SharedLibFont NO

Reply via email to