SIGSEGV libX11 src/ImUtil.c:733
Submitted by Vinson Lee
Assigned to mes..@..op.org
Description
$ pkg-config --modversion x11 1.6.2
Run piglit test glx-tfp on Mesa Software Rasterizer.
$ ./bin/glx-tfp -auto Segmentation fault (core dumped)
(gdb) bt
#0 _XPutPixel32 (ximage=0x17b0200, x=0, y=<optimized out>, pixel=16711680) at ../../src/ImUtil.c:733
#1 0x00007f6fe63e7cd3 in _XSetImage (srcimg=srcimg@entry=0x17afc50, dstimg=dstimg@entry=0x17b0200, x=0, x@entry=2, y=0, y@entry=24838656) at ../../src/ImUtil.c:949
#2 0x00007f6fe63e3b66 in XGetSubImage (dpy=<optimized out>, d=<optimized out>, x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>,
plane_mask=plane_mask@entry=18446744073709551615, format=format@entry=2, dest_image=dest_image@entry=0x17b0200, dest_x=dest_x@entry=0, dest_y=dest_y@entry=0)
at ../../src/GetImage.c:129
#3 0x00007f6fe6739ede in swrastGetImage (read=<optimized out>, x=<optimized out>, y=<optimized out>, w=<optimized out>, h=<optimized out>, data=<optimized out>,
loaderPrivate=0x17afe50) at drisw_glx.c:198
#4 0x00007f6fe1ad1fc4 in swrastSetTexBuffer2 (pDRICtx=<optimized out>, target=<optimized out>, texture_format=8409, dPriv=0x17b0290) at swrast.c:103
#5 0x0000000000401b13 in draw_pixmap (pixmap=75497480, x=32, y=32, w=64, h=64) at piglit/tests/glx/glx-tfp.c:143
#6 0x0000000000401cc4 in draw (dpy=0x15a1010) at piglit/tests/glx/glx-tfp.c:175
#7 0x00007f6fe6a1cd11 in piglit_glx_event_loop (dpy=0x15a1010, draw=0x401be2 <draw>) at piglit/tests/util/piglit-glx-util.c:210
#8 0x0000000000402310 in main (argc=2, argv=0x7fff75933008) at piglit/tests/glx/glx-tfp.c:355
(gdb) frame 0
#0 _XPutPixel32 (ximage=0x17b0200, x=0, y=<optimized out>, pixel=16711680) at ../../src/ImUtil.c:733
733 in ../../src/ImUtil.c
(gdb) print addr
$1 = (unsigned char *) 0x0
(gdb) print ximage->data
$2 = 0x0
libX11/src/ImUtil.c
721 static int _XPutPixel32 (
722 register XImage *ximage,
723 int x,
724 int y,
725 unsigned long pixel)
726 {
727 unsigned char *addr;
728
729 if ((ximage->format == ZPixmap) && (ximage->bits_per_pixel == 32)) {
730 addr = &((unsigned char )ximage->data)
731 [y * ximage->bytes_per_line + (x << 2)];
732 if (((const char *)&byteorderpixel) == ximage->byte_order)
733 *((CARD32 *)addr) = pixel;
734 else if (ximage->byte_order == MSBFirst) {
735 addr[0] = pixel >> 24;
736 addr[1] = pixel >> 16;
737 addr[2] = pixel >> 8;
738 addr[3] = pixel;
739 } else {
740 addr[3] = pixel >> 24;
741 addr[2] = pixel >> 16;
742 addr[1] = pixel >> 8;
743 addr[0] = pixel;
744 }
745 return 1;
746 } else {
747 _XInitImageFuncPtrs(ximage);
748 return XPutPixel(ximage, x, y, pixel);
749 }
750 }
Version: 10.2