xserver 1.8.0 radeonhd crashing

Artur Skawina art.08.09 at gmail.com
Tue Apr 6 02:19:26 PDT 2010


Michel Dänzer wrote:
> On Tue, 2010-04-06 at 10:30 +0200, Artur Skawina wrote: 
>> Upgraded xorg to git head a few days ago, today tried to view a youtube page
>> in ff3.6 and every attempt leads to an xserver segfault at 0x10.
>> Server backtrace (below) didn't contain much info; gdb version looks like this:

>> #10 0xf72cfefb in R300CheckComposite (op=3, pSrcPicture=0x88a63f0, 
>>     pMaskPicture=0x88a6460, pDstPicture=0x86ec9c8)
>>     at ../../src/radeon_exa_render.c:1228
>> #11 0xf723227c in exaTryDriverComposite (op=0 '\000', pSrc=0x88a63f0, 
>>     pMask=0x88a6460, pDst=0x86ec9c8, xSrc=275, ySrc=334, xMask=0, yMask=0, 
>>     xDst=275, yDst=334, width=77, height=23) at ../../exa/exa_render.c:695
>> #12 0xf7233590 in exaComposite (op=3 '\003', pSrc=0x88a63f0, pMask=0x88a6460, 
>>     pDst=0x86ec9c8, xSrc=275, ySrc=334, xMask=0, yMask=0, xDst=275, yDst=334, 
>>     width=77, height=23) at ../../exa/exa_render.c:1034
> 
> Most likely pSrcPicture->pDrawable is NULL (i.e. it's a source-only,
> solid or gradient picture) in R300CheckComposite(), and that fails to
> check the pointer before dereferencing it.

Yep, to confirm, i tried:

diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index 252e7b0..766d04f 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1225,6 +1225,8 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
 static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
 			       PicturePtr pDstPicture)
 {
+    if (!pSrcPicture->pDrawable)
+	return FALSE;
     VAR_PREAMBLE(pSrcPicture->pDrawable->pScreen);
     uint32_t tmp1;
     PixmapPtr pSrcPixmap, pDstPixmap;

and the crash is gone.

Thank you for the quick reply.

artur



More information about the xorg mailing list