> > There have been bugs of this sort
> > fixed in the font renderers not long before 4.3.  Though maybe
> > more exist.  If this is easily reproducible I suspect you'll
> > find that it only happens with the freetype or xtt renders.
> 
> It likely is the bitmap renderer, but I'll try without freetype.

Font data comes from the fontserver.  More gdb debugging:

(gdb) down
#2  0x0823e611 in XAAGlyphBltTEColorExpansion (pScrn=0x881e8e0, xInit=1, 
    yInit=142837096, font=0x0, fg=0, bg=-1, rop=3, planemask=4294967295, 
    cclip=0x89434ac, nglyph=1, gBase=0x0, ppci=0x883899c) at xaaTEText.c:281
                               ^^^^^^^^^
Note gBase is NULL, that will result in the NULL pointer dereference
later on.

(gdb) up
#3  0x0823e297 in XAAPolyText16TEColorExpansion (pDraw=0x8943480, 
    pGC=0x893c9f0, x=0, y=20, count=1, chars=0x8939723) at xaaTEText.c:97
(gdb) print *pGC
$16 = {pScreen = 0x8820f88, depth = 16 '\020', alu = 3 '\003', lineWidth = 0, 
  dashOffset = 0, numInDashList = 2, dash = 0x879a868 "\004\004", 
  lineStyle = 0, capStyle = 1, joinStyle = 0, fillStyle = 0, fillRule = 0, 
  arcMode = 1, subWindowMode = 0, graphicsExposures = 1, clientClipType = 0, 
  miTranslate = 1, tileIsPixel = 1, fExpose = 1, freeCompClip = 0, unused = 0, 
  planemask = 4294967295, fgPixel = 0, bgPixel = 1, tile = {pixmap = 0x0, 
    pixel = 0}, stipple = 0x88626c8, patOrg = {x = 0, y = 0}, 
  font = 0x893caa8, clipOrg = {x = 0, y = 0}, lastWinOrg = {x = 1, y = 91}, 
  clientClip = 0x0, stateChanges = 0, serialNumber = 1782, funcs = 0x879e460, 
  ops = 0x895a2f0, devPrivates = 0x893ca48, pRotatedPixmap = 0x0, 
  pCompositeClip = 0x89434ac}
(gdb) print *(pGC->font)
$18 = {refcnt = 2, info = {firstCol = 0, lastCol = 255, firstRow = 0, 
    lastRow = 239, defaultCh = 0, noOverlap = 1, terminalFont = 1, 
    constantMetrics = 1, constantWidth = 1, inkInside = 1, inkMetrics = 0, 
    allExist = 0, drawDirection = 0, cachable = 1, anamorphic = 0, 
    maxOverlap = 0, pad = 0, maxbounds = {leftSideBearing = 0, 
      rightSideBearing = 12, characterWidth = 12, ascent = 20, descent = 0, 
      attributes = 0}, minbounds = {leftSideBearing = 0, 
      rightSideBearing = 12, characterWidth = 12, ascent = 20, descent = 0, 
      attributes = 0}, ink_maxbounds = {leftSideBearing = 10, 
      rightSideBearing = 12, characterWidth = 12, ascent = 20, descent = 0, 
      attributes = 0}, ink_minbounds = {leftSideBearing = 0, 
      rightSideBearing = 0, characterWidth = 12, ascent = 0, descent = -18, 
      attributes = 0}, fontAscent = 20, fontDescent = 0, nprops = 22, 
    props = 0x893cb38, 
    isStringProp = 0x893cbe8 "\001\001\001\001\001\001\001"}, bit = 0 '\0', 
  byte = 0 '\0', glyph = 4 '\004', scan = 1 '\001', format = 512, 
  get_glyphs = 0x867cf80 <_fs_get_glyphs>, 
  get_metrics = 0x867d3f0 <_fs_get_metrics>, 
  unload_font = 0x867d650 <_fs_unload_font>, unload_glyphs = 0, 
  fpe = 0x8869960, svrPrivate = 0x0, fontPrivate = 0x893bc70, 
  fpePrivate = 0x893bc80, maxPrivate = 1, devPrivates = 0x893cb2c}


xaaTEText.c, line 91 looks like this:

    if(n) XAAGlyphBltTEColorExpansion(
        infoRec->pScrn, x + pDraw->x, y + pDraw->y,
        pGC->font, pGC->fgPixel, -1, pGC->alu, pGC->planemask, 
        pGC->pCompositeClip, n, FONTGLYPHS(pGC->font), infoRec->CharInfo);


grepping for the FONTGLYPHS macro finds this:

bogomips root /work/xfree86/xc# find -name \*.h | xargs grep "FONTGLYPHS"
./programs/Xserver/include/dixfontstr.h:#define FONTGLYPHS(font)          0


Huh?  How can this ever work?  And why it isn't triggered more frequently?

  Gerd

-- 
/join #zonenkinder
_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to