[PATCH] render: Avoid infinite loops in alpha map handling (#23581)

Adam Jackson ajax at nwnk.net
Wed May 12 11:22:06 PDT 2010


On Wed, 2010-05-12 at 10:19 -0700, Keith Packard wrote:

> Is there somewhere in the server that is recursing through the alphaMap?
> fb doesn't, and I don't know of any acceleration code that deals with alphaMap.

Using the testcase in the bug on an Xvfb:

(gdb) bt
#0  _int_malloc (av=0x3bef17ae80, bytes=<value optimized out>) at malloc.c:4727
#1  0x0000003beee79b0d in __libc_malloc (bytes=304) at malloc.c:3660
#2  0x0000003bfda1797b in _pixman_image_allocate () at pixman-image.c:98
#3  0x0000003bfda3a50a in pixman_image_create_bits (format=PIXMAN_x8r8g8b8, 
    width=10, height=<value optimized out>, bits=<value optimized out>, 
    rowstride_bytes=40) at pixman-bits-image.c:1004
#4  0x000000000041c0ed in create_bits_picture (pict=0x94d5a0, has_clip=0, 
    xoff=0x7fffff3ff18c, yoff=0x7fffff3ff188) at fbpict.c:291
#5  image_from_pict (pict=0x94d5a0, has_clip=0, xoff=0x7fffff3ff18c, 
    yoff=0x7fffff3ff188) at fbpict.c:434
#6  0x000000000041c220 in set_image_properties (pict=0x94d5a0, has_clip=0, 
    xoff=0x7fffff3ff1fc, yoff=0x7fffff3ff1f8) at fbpict.c:392
#7  image_from_pict (pict=0x94d5a0, has_clip=0, xoff=0x7fffff3ff1fc, 
    yoff=0x7fffff3ff1f8) at fbpict.c:459
#8  0x000000000041c220 in set_image_properties (pict=0x94d5a0, has_clip=0, 
    xoff=0x7fffff3ff26c, yoff=0x7fffff3ff268) at fbpict.c:392
#9  image_from_pict (pict=0x94d5a0, has_clip=0, xoff=0x7fffff3ff26c, 
    yoff=0x7fffff3ff268) at fbpict.c:459
/* ... */
#224620 0x000000000041c220 in set_image_properties (pict=0x94d5a0, has_clip=0, 
    xoff=0x7fffffffe08c, yoff=0x7fffffffe088) at fbpict.c:392
#224621 image_from_pict (pict=0x94d5a0, has_clip=0, xoff=0x7fffffffe08c, 
    yoff=0x7fffffffe088) at fbpict.c:459
#224622 0x000000000041c56a in fbComposite (op=1 '\001', pSrc=0x94d5a0, 
    pMask=0x0, pDst=0x94d5a0, xSrc=0, ySrc=0, xMask=0, yMask=0, xDst=0, 
    yDst=0, width=10, height=10) at fbpict.c:169
#224623 0x00000000004aa440 in damageComposite (op=1 '\001', pSrc=0x94d5a0, 
    pMask=0x0, pDst=0x94d5a0, xSrc=<value optimized out>, 
    ySrc=<value optimized out>, xMask=0, yMask=0, xDst=0, yDst=0, width=10, 
    height=10) at damage.c:643
#224624 0x00000000004a27ce in ProcRenderComposite (
    client=<value optimized out>) at render.c:723
#224625 0x000000000050392c in Dispatch () at dispatch.c:439
#224626 0x00000000004f424a in main (argc=<value optimized out>, 
    argv=0x7fffffffe3d8, envp=<value optimized out>) at main.c:286

So, no, nowhere in the server as such.

I'm actually a little impressed that gdb got to the bottom of that.

- ajax
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100512/67965241/attachment.pgp>


More information about the xorg-devel mailing list