Comment 8 for bug 241145

Revision history for this message
In , Raul Sanchez Siles (rasasi78) wrote :

Maybe according to the backtrace this hasn't been, strictly speaking, a problem with the driver, but I didn't have the same problem with the previous i810 driver.

There's a major difference when I use the KDE translucencies graphical effects and when I don't. And the difference is that when I don't use mean the problem is not repeatable. I don't exactly know what using translucencies could mean in Xorg using features, but what I know is that in the translucencies mode, a composite manager is used. Also yaluake is using the konsole settings which, in turn shows the bacground desktop image transparency-like.

Since this is a complicated problem to repeat not because of its lack of repeatibility, but because of the amount of especifical programs needed I decided to used the core dump file I have from the crash to get more information.

I've inspected the variables values from the core file using gdb:

The crash happens exactly on the macro cwDstPictureDecl in the cwGlyphs function. Here are the backtrace and some useful variable information:

Frame #9:
#9 0x0817270d in cwGlyphs (op=3 '\003', pSrcPicture=0x8973ab8,
    pDstPicture=0x91c1ef0, maskFormat=0x8219610, xSrc=0, ySrc=0, nlists=1,
    lists=0xbfa25fe8, glyphs=0xbfa25be8) at ../../../miext/cw/cw_render.c:297

p *pSrcPicture
$3 = {pDrawable = 0x86fb3d8, pFormat = 0x8219610, format = PICT_a8r8g8b8,
  refcnt = 1, id = 35651999, pNext = 0x0, repeat = 1, graphicsExposures = 0,
  subWindowMode = 0, polyEdge = 0, polyMode = 0, freeCompClip = 1,
  clientClipType = 0, componentAlpha = 0, repeatType = 1, unused = 2090695,
  alphaMap = 0x0, alphaOrigin = {x = 0, y = 0}, clipOrigin = {x = 0, y = 0},
  clientClip = 0x0, dither = 0, stateChanges = 0, serialNumber = 9719,
  pCompositeClip = 0x86fc908, devPrivates = 0x8973b0c, transform = 0x0,
  filter = 0, filter_params = 0x0, filter_nparams = 0, pSourcePict = 0x0}
p *pDstPicture
$4 = {pDrawable = 0x8f26d68, pFormat = 0x8219670, format = PICT_x8r8g8b8,
  refcnt = 1, id = 35672205, pNext = 0x0, repeat = 0, graphicsExposures = 0,
  subWindowMode = 0, polyEdge = 0, polyMode = 0, freeCompClip = 0,
  clientClipType = 0, componentAlpha = 0, repeatType = 0, unused = 12064,
  alphaMap = 0x0, alphaOrigin = {x = 0, y = 0}, clipOrigin = {x = 0, y = 0},
  clientClip = 0x0, dither = 0, stateChanges = 0, serialNumber = 4021270,
  pCompositeClip = 0x8f26d94, devPrivates = 0x91c1f44, transform = 0x0,
  filter = 0, filter_params = 0x0, filter_nparams = 0, pSourcePict = 0x0}

p *lists
$6 = {xOff = 101, yOff = 60, len = 4 '\004', format = 0x8219610}

p *lists->format
$7 = {id = 54, format = 166024, type = 1 '\001', depth = 32 ' ', direct = {
    red = 16, redMask = 255, green = 8, greenMask = 255, blue = 0,
    blueMask = 255, alpha = 24, alphaMask = 255}, index = {vid = 0,
    pColormap = 0x0, nvalues = 0, pValues = 0x0, devPrivate = 0x0}}

p **glyphs
$10 = {refcnt = 8, devPrivates = 0x0, size = 192, info = {width = 5,
    height = 9, x = -1, y = 9, xOff = 7, yOff = 0}}

PictureScreenPrivateIndex=7
p pDstPicture->pDrawable->pScreen->devPrivates[7].ptr
$17 = (pointer) 0x8218268

cwScreenIndex=13
p pDstPicture->pDrawable->pScreen->devPrivates[13].ptr
$19 = (pointer) 0x824c470

Now into frame #8:
#8 0x08172442 in cwGetBackingPicture (pPicture=0x91c1ef0, x_off=0xbfa25a90,
    y_off=0xbfa25a8c) at ../../../miext/cw/cw_render.c:129
129 in ../../../miext/cw/cw_render.c

p *pPicture
$1 = {pDrawable = 0x8f26d68, pFormat = 0x8219670, format = PICT_x8r8g8b8,
  refcnt = 1, id = 35672205, pNext = 0x0, repeat = 0, graphicsExposures = 0,
  subWindowMode = 0, polyEdge = 0, polyMode = 0, freeCompClip = 0,
  clientClipType = 0, componentAlpha = 0, repeatType = 0, unused = 12064,
  alphaMap = 0x0, alphaOrigin = {x = 0, y = 0}, clipOrigin = {x = 0, y = 0},
  clientClip = 0x0, dither = 0, stateChanges = 0, serialNumber = 4021270,
  pCompositeClip = 0x8f26d94, devPrivates = 0x91c1f44, transform = 0x0,
  filter = 0, filter_params = 0x0, filter_nparams = 0, pSourcePict = 0x0}

cwPictureIndex=0
p pPicture->devPrivates[0].ptr
$3 = (pointer) 0x976c298 (cwPicturePtr pPicturePrivate)
p *(WindowPtr)pPicture->pDrawable
$17 = {drawable = {type = 0 '\0', class = 1 '\001', depth = 24 '\030',
    bitsPerPixel = 32 ' ', id = 35672184, x = 1, y = 0, width = 1022,
    height = 342, pScreen = 0x8216e18, serialNumber = 4021270},
  parent = 0x95937e0, nextSib = 0x0, prevSib = 0x0, firstChild = 0x8f26c38,
  lastChild = 0x8f26c38, clipList = {extents = {x1 = 1, y1 = 0, x2 = 1,
      y2 = 0}, data = 0x81edf04}, borderClip = {extents = {x1 = 1, y1 = 0,
      x2 = 1, y2 = 0}, data = 0x81edf04}, valdata = 0x0, winSize = {extents = {
      x1 = 1, y1 = 0, x2 = 1023, y2 = 22}, data = 0x84feb08}, borderSize = {
    extents = {x1 = 1, y1 = 0, x2 = 1023, y2 = 22}, data = 0x8f193d0},
  origin = {x = 0, y = 0}, borderWidth = 0, deliverableEvents = 57471,
  eventMask = 6479999, background = {pixmap = 0xa7c03008, pixel = 2814390280},
  border = {pixmap = 0xff000000, pixel = 4278190080}, backStorage = 0x0,
  optional = 0x911f7d8, backgroundState = 3, borderIsPixel = 1,
  cursorIsNone = 0, backingStore = 0, saveUnder = 0, DIXsaveUnder = 0,
  bitGravity = 1, winGravity = 1, overrideRedirect = 0, visibility = 3,
  mapped = 1, realized = 0, viewable = 0, dontPropagate = 0, forcedBS = 0,
  redirectDraw = 0, devPrivates = 0x8f26dec}

cwWindowIndex=3
p *pPicture->pDrawable
$5 = {type = 0 '\0', class = 1 '\001', depth = 24 '\030',
  bitsPerPixel = 32 ' ', id = 35672184, x = 1, y = 0, width = 1022,
  height = 342, pScreen = 0x8216e18, serialNumber = 4021270}

(gdb) p ((WindowPtr)pPicture->pDrawable)->devPrivates[3]
$13 = {ptr = 0x0, val = 0, uval = 0, fptr = 0}
(gdb) p ((WindowPtr)pPicture->pDrawable)->devPrivates[2]
$14 = {ptr = 0x0, val = 0, uval = 0, fptr = 0}
(gdb) p ((WindowPtr)pPicture->pDrawable)->devPrivates[1]
$15 = {ptr = 0x91c1ef0, val = 152837872, uval = 152837872, fptr = 0x91c1ef0}
(gdb) p ((WindowPtr)pPicture->pDrawable)->devPrivates[0]
$16 = {ptr = 0x8260758, val = 136709976, uval = 136709976, fptr = 0x8260758}

It seems that ((WindowPtr)pPicture->pDrawable)->devPrivates[3] points nowhere when it should, but unfortunately I don't know the reason of this. If you miss any information please let me know, also I could send the backtrace if you tell me how I should send it (96MB uncompressed, 10MB bzipped) so I think asking me for a certain value is more convenient.