mach64 broken with xserver 1.13 ?
Alan Coopersmith
alan.coopersmith at oracle.com
Thu Dec 6 15:23:46 PST 2012
On 11/18/12 11:25 PM, Connor Behan wrote:
> On 18/11/12 12:00 PM, xorg-devel-request at lists.x.org wrote:
>>> I'm seeing the xf86-video-mach64 6.9.3 crashing with xserver 1.13 on
>>> OpenBSD, both on sparc64 and intel (x86_64) machines.
>>>
>>> here's some debugging information. Apparently something in devPrivate
>>> doesn't get initialized properly, but I'm not able to figure out
>>> what. Any suggestion ?
>> I'd bet its a long standing exa bug somewhere or maybe a mach64 exa
>> specific problem. Since on previous servers mach64 would default to
>> XAA, but that got removed. Dave.
> This summer I suspected that such a bug would hit mach64 so I made this
> patch: https://bugs.freedesktop.org/show_bug.cgi?id=51137 I didn't push
> to get it accepted because I couldn't test it and I was having a hard
> enough time working on the patch I could test.
Unfortunately, that patch doesn't seem to be enough here - it gets past
the crash initializing the root window, but crashes later bringing up
GNOME in another place it seems to be trying to access pixmap data
directly:
---- called from signal handler with signal 11 (SIGSEGV) ------
=>[14] Mach64PixelARGB(pPixmap = 0x1d32820, format = 537004168U, argb =
0xffff80ffbfffcc60), line 219 in "atimach64render.c"
[15] Mach64PrepareMask(m3d = 0xc81750, op = 8, pSrcPicture = 0x1d32a10,
pMaskPicture = 0x1d314e0, pSrc = 0x1d32820, pMask = 0x1e1b300), line 504 in
"atimach64render.c"
[16] Mach64PrepareComposite(op = 8, pSrcPicture = 0x1d32a10, pMaskPicture =
0x1d314e0, pDstPicture = 0x1d31190, pSrc = 0x1d32820, pMask = 0x1e1b300, pDst =
0x1dfe5c0), line 706 in "atimach64render.c"
[17] exaTryDriverComposite(op = '\b', pSrc = 0x1d32a10, pMask = 0x1d314e0,
pDst = 0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst = 1194, yDst
= 5, width = 79U, height = 11U), line 746 in "exa_render.c"
[18] exaComposite(op = '\b', pSrc = 0x1d32a10, pMask = 0x1d314e0, pDst =
0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst = 1194, yDst = 5,
width = 79U, height = 11U), line 1008 in "exa_render.c"
[19] exaTryMagicTwoPassCompositeHelper(op = '\003', pSrc = 0x1d32a10, pMask =
0x1d314e0, pDst = 0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst =
1194, yDst = 5, width = 79U, height = 11U), line 855 in "exa_render.c"
[20] exaComposite(op = '\003', pSrc = 0x1d32a10, pMask = 0x1d314e0, pDst =
0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst = 1194, yDst = 5,
width = 79U, height = 11U), line 1029 in "exa_render.c"
[21] damageComposite(op = '\003', pSrc = 0x1d32a10, pMask = 0x1d314e0, pDst =
0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst = 1194, yDst = 5,
width = 79U, height = 11U), line 563 in "damage.c"
[22] CompositePicture(op = '\003', pSrc = 0x1d32a10, pMask = 0x1d314e0, pDst =
0x1d31190, xSrc = 1194, ySrc = 5, xMask = 0, yMask = 0, xDst = 1194, yDst = 5,
width = 79U, height = 11U), line 1615 in "picture.c"
[23] exaGlyphs(op = '\003', pSrc = 0x1d32a10, pDst = 0x1d31190, maskFormat =
0xc84ce8, xSrc = 1194, ySrc = 15, nlist = -1, list = 0xffff80ffbffff660, glyphs
= 0xffff80ffbfffee90), line 835 in "exa_glyphs.c"
[24] damageGlyphs(op = '\003', pSrc = 0x1d32a10, pDst = 0x1d31190, maskFormat
= 0xc84ce8, xSrc = 1194, ySrc = 15, nlist = 2, list = 0xffff80ffbffff640, glyphs
= 0xffff80ffbfffee30), line 625 in "damage.c"
[25] CompositeGlyphs(op = '\003', pSrc = 0x1d32a10, pDst = 0x1d31190,
maskFormat = 0xc84ce8, xSrc = 1194, ySrc = 15, nlist = 2, lists =
0xffff80ffbffff640, glyphs = 0xffff80ffbfffee30), line 559 in "glyph.c"
[26] ProcRenderCompositeGlyphs(client = 0x12c21f0), line 1394 in "render.c"
[27] ProcRenderDispatch(client = 0x12c21f0), line 1989 in "render.c"
[28] Dispatch(), line 433 in "dispatch.c"
[29] main(argc = 8, argv = 0xffff80ffbffffba8, envp = 0xffff80ffbffffbf0),
line 343 in "main.c"
(dbx) list
215 /* exaGetPixmapFirstPixel() */
216
217 switch (pPixmap->drawable.bitsPerPixel) {
218 case 32:
219 pixel = *(CARD32 *)(pPixmap->devPrivate.ptr);
220 break;
221 case 16:
222 pixel = *(CARD16 *)(pPixmap->devPrivate.ptr);
223 break;
224 default:
225 pixel = *(CARD8 *)(pPixmap->devPrivate.ptr);
226 break;
227 }
228
(dbx) print pPixmap
pPixmap = 0x1d32820
(dbx) print *pPixmap
*pPixmap = {
drawable = {
type = '\001'
class = '\0'
depth = '\030'
bitsPerPixel = ' '
id = 23068727U
x = 0
y = 0
width = 1U
height = 1U
pScreen = 0xc84310
serialNumber = 237U
}
devPrivates = 0x1d32868
refcnt = 3
devKind = 64
devPrivate = {
ptr = (nil)
val = 0
uval = 0
fptr = (nil)
}
screen_x = 0
screen_y = 0
usage_hint = 0
master_pixmap = 0xe0db40
}
For now, I've just added --disable-exa to the build flags for our mach64
package.
--
-Alan Coopersmith- alan.coopersmith at oracle.com
Oracle Solaris Engineering - http://blogs.oracle.com/alanc
More information about the xorg-devel
mailing list