Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct


    Qt World Summit: Early-Bird Tickets

    Unsolved Crash while drawing text ?

    Mobile and Embedded
    crash qt4.8.6 qpainter draw
    1
    1
    1348
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Cranberriess
      Cranberriess last edited by

      Hi all,
      There is a crash in our embedded linux system. We analysed the core file generated, and here is the output of core file ;

      Program terminated with signal 11, Segmentation fault.
      #0 qt_alphamapblit_quint32 (rasterBuffer=0x1e, x=-16777216, y=<value optimized out>,
      color=3069460152, map=0xb5406000 "", mapWidth=9, mapHeight=<value optimized out>, mapStride=12,
      clip=0x0)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7198

      7198 const int coverage = map[i];

      (gdb) bt
      #0 qt_alphamapblit_quint32 (rasterBuffer=0x1e, x=-16777216, y=<value optimized out>,
      color=3069460152, map=0xb5406000 "", mapWidth=9, mapHeight=<value optimized out>, mapStride=12,
      clip=0x0)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qdrawhelper.cpp:7198
      #1 0xb6123204 in QRasterPaintEngine::alphaPenBlt (this=<value optimized out>, src=0xb613d570,
      bpl=12, depth=164, rx=59, ry=151, w=9, h=13)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpaintengine_raster.cpp:2605
      #2 0xb623a9ec in QFontEngineQPF::draw (this=0xe50308, p=0x1102228, _x=57, _y=<value optimized out>,
      si=...)
      at qt-everywhere-opensource-src-4.8.6/src/gui/text/qfontengine_qpf.cpp:669
      #3 0xb612dd70 in QRasterPaintEngine::drawTextItem (this=0x1102228, p=..., textItem=...)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpaintengine_raster.cpp:3133
      #4 0xb60cb718 in QPainter::drawTextItem (this=<value optimized out>, p=..., _ti=...)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpainter.cpp:6709
      #5 0xb61be58c in drawMenuText (this=<value optimized out>, p=0x0, pos=<value optimized out>,
      selection=<value optimized out>)
      at qt-everywhere-opensource-src-4.8.6/src/gui/text/qtextlayout.cpp:2050
      #6 QTextLine::draw (this=<value optimized out>, p=0x0, pos=<value optimized out>,
      selection=<value optimized out>)
      at qt-everywhere-opensource-src-4.8.6/src/gui/text/qtextlayout.cpp:
      #7 0xb60cea4c in qt_format_text (fnt=..., _r=<value optimized out>, tf=134217745, option=0x0,
      str=..., brect=0x0, tabstops=-1090535288, ta=0x0, tabarraylen=0, painter=0xbeffc0f8)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpainter.cpp:8283
      #8 0xb60cf3c4 in QPainter::drawText (this=0xbeffc0f8, r=<value optimized out>,
      flags=<value optimized out>, str=..., br=0x0)
      at qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpainter.cpp:6199

      We examined that the painter is NULL in frame 6 while it is not NULL in frame 7 ;

      #6  QTextLine::draw (this=<value optimized out>, p=0x0, pos=<value optimized out>,
          selection=<value optimized out>)
          at qt-everywhere-opensource-src-4.8.6/src/gui/text/qtextlayout.cpp:2425
      2425                drawMenuText(p, iterator.x, itemBaseLine, si, gf, eng, iterator.itemStart, iterator.glyphsStart);
      2429                    QPainterPath path;
      (gdb) p p
      $30 = (QPainter *) 0x0
      
      Frame 7 gdb trace : 
      (gdb) frame 7
      #7  0xb60cea4c in qt_format_text (fnt=..., _r=<value optimized out>, tf=134217745, option=0x0,
          str=..., brect=0x0, tabstops=-1090535288, ta=0x0, tabarraylen=0, painter=0xbeffc0f8)
          at  qt-everywhere-opensource-src-4.8.6/src/gui/painting/qpainter.cpp:8283
      8283                line.draw(painter, QPointF(r.x() + xoff, r.y() + yoff));
      (gdb) p painter
      **$31 = (QPainter *) 0xbeffc0f8**
      
      

      I suppose, there are two possible causes of this corruption, one of them is related to the third party library, Qt ( the version we use is 4.8 ), the other one is related to the our source code. We will be investigating the problem from the point of our source code. Could you please analyse the problem, and give us feedback about the possible reasons ?

      Thanks,

      1 Reply Last reply Reply Quote 0
      • First post
        Last post