tech-x11 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Xserver core dump (xf86-video-intel)



On Mon, 13 Dec 2010, Iain Hibbert wrote:

> with new Xserver of last week (updated 6 dec) I get a crash when viewing
> certain pages with a firefox previously built (don't know if thats
> relevant)
>
> I'm not sure what it is on the page that causes a failure, but it is 100%
> reproducable at eg "http://www.failblog.org/"; => SIGSEGV, and the
> Xorg.core file backtrace is invariably
>
> #8  <signal handler called>
> #9  0xbb4591e9 in i915_batch_flush_notify () from 
> /usr/X11R7/lib/modules/drivers/intel_drv.so
> #10 0xbb4594fa in i915_check_composite () from 
> /usr/X11R7/lib/modules/drivers/intel_drv.so
> #11 0xbb358a03 in exaCompositeRects () from /usr/X11R7/lib/modules/libexa.so
> #12 0xbb35931e in exaComposite () from /usr/X11R7/lib/modules/libexa.so
> #13 0x0814f9f7 in DamageRegionAppend ()
> #14 0x08132ed5 in PanoramiXRenderReset ()
> #15 0x08091100 in Dispatch ()
> #16 0x0806d4f9 in main ()
>
> The hardware is a T60 laptop with i945GM graphics, anybody any clue as to
> what I should look towards?

rebuilding the xf86-video-intel driver with DBG=-g -O2 this changes

#9  0xbb458fe9 in i915_check_composite_texture (pPict=0xaa01ee60, unit=<value 
optimized out>)
    at 
/var/cvs/NetBSD-current/xsrc/external/mit/xf86-video-intel/dist/src/i915_render.c:172
#10 0xbb4592fa in i915_check_composite (op=3, pSrcPicture=0xaa01ee60, 
pMaskPicture=0x0, pDstPicture=0xaa0057a0)
    at 
/var/cvs/NetBSD-current/xsrc/external/mit/xf86-video-intel/dist/src/i915_render.c:223
#11 0xbb358a03 in exaCompositeRects () from /usr/X11R7/lib/modules/libexa.so
#12 0xbb35931e in exaComposite () from /usr/X11R7/lib/modules/libexa.so
#13 0x0814f9f7 in DamageRegionAppend ()
#14 0x08132ed5 in PanoramiXRenderReset ()
#15 0x08091100 in Dispatch ()
#16 0x0806d4f9 in main ()

so that I see we are actually in i915_check_composite_texture, and that

(gdb) frame 9
#9  0xbb458fe9 in i915_check_composite_texture (pPict=0xaa01ee60, unit=<value 
optimized out>)
    at 
/var/cvs/NetBSD-current/xsrc/external/mit/xf86-video-intel/dist/src/i915_render.c:172
172         ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum];

the pPict argument (which is pSrcPicture from i915_check_composite)

(gdb) print *pPict
$6 = {pDrawable = 0x0, pFormat = 0x0, format = PICT_a8r8g8b8, refcnt = 1, id = 
14681750, pNext = 0x0, repeat = 1, graphicsExposures = 0,  subWindowMode = 0, 
polyEdge = 0, polyMode = 0, freeCompClip = 0, clientClipType = 0, 
componentAlpha = 0, repeatType = 2, unused = 0,  alphaMap = 0x0, alphaOrigin = 
{x = 0, y = 0}, clipOrigin = {x = 0, y = 0}, clientClip = 0x0, dither = 0, 
stateChanges = 8191,  serialNumber = 2147483648, pCompositeClip = 0x0, 
devPrivates = 0x0, transform = 0xaa015eb0, filter = 0, filter_params = 0x0,  
filter_nparams = 0, pSourcePict = 0xaa015e50}

does not have a valid pDrawable pointer, causing the SIGSEGV

looking at exa sources, it seems that it is expected that pSrc may not
have a valid pDrawable component but I don't really know what that means..
adding the following patch

Index: i915_render.c
===================================================================
RCS file: /cvsroot/xsrc/external/mit/xf86-video-intel/dist/src/i915_render.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 i915_render.c
--- i915_render.c       9 Jun 2009 02:54:33 -0000       1.1.1.2
+++ i915_render.c       14 Dec 2010 17:34:19 -0000
@@ -220,7 +220,7 @@
                             "alpha and source value blending.\n");
     }

-    if (!i915_check_composite_texture(pSrcPicture, 0))
+    if (pSrcPicture->pDrawable && !i915_check_composite_texture(pSrcPicture, 
0))
         I830FALLBACK("Check Src picture texture\n");
     if (pMaskPicture != NULL && !i915_check_composite_texture(pMaskPicture, 1))
         I830FALLBACK("Check Mask picture texture\n");

just makes it fail soon after in i915_prepare_composite() with much the
same complaint..  I don't know where to go here, it seems that the exa
source or the intel driver is making invalid assumptions, and the XAA and
EXA stuff was removed from xf86-video-intel in the 2.8.0 release along
with DRI1 which I think we provide, leaving only DRI2 which we don't have.

Bah

on the other hand

Section "Device"
        Option          "Accel"         "Off"
        Driver          "intel"
        Identifier      "my display"
EndSection

lets me at least view websites without crashing the Xserver..

iain


Home | Main Index | Thread Index | Old Index