[Interest] QRasterPaintEngine updateClipPath problems

Alper Sağlam alprsglm at gmail.com
Thu Jan 14 10:17:10 CET 2016


Hi all,

I have a weird crash that logs Qt stacks to the screen and when i want to
get into details it gets complicated. Therefore i want to ask it to this
mail group.

I have a stack trace: ( QT4.1.4 ) and it shows me a segmentation fault.

*0../libQtGui.so.4(QRasterPaintEngine::updateClipPath(QPainterPath const&,
Qt::ClipOperation)+0x160) [2bf83438]*
*1../libQtGui.so.4(QRasterPaintEngine::begin(QPaintDevice*)+0x588)
[2bf836b8]*
*2../libQtGui.so.4(QPainter::begin(QPaintDevice*)+0x1d8) [2bf3e3c8]*
*3../libQtGui.so.4(QPainter::QPainter(QPaintDevice*)+0x134) [2bf3fb98]*
*4../libQtWidgets.so(………………..::paintEvent(QPaintEvent*)+0x198) [2b9c4880]*
*5../libQtGui.so.4(QWidget::event(QEvent*)+0x804) [2bebb640]*
*6../libQtGui.so.4(QFrame::event(QEvent*)+0x1c) [2c0c09b0]*
*7../libQtGui.so.4(QLabel::event(QEvent*)+0x48) [2c0c58e0]*
*8../libQtGui.so.4(QApplicationPrivate::notify_helper(QObject*,
QEvent*)+0x1a0) [2be83e90]*
*9../libQtGui.so.4(QApplication::notify(QObject*, QEvent*)+0x37c)
[2be840d8]*
*10../libQtGui.so.4(qt_sendSpontaneousEvent(QObject*, QEvent*)+0x60)
[2bec0b90]*
*11../libQtGui.so.4(QWidgetPrivate::drawWidget(QPaintDevice*, QRegion
const&, QPoint const&, int)+0x4a4) [2bf9ddd8]*
*12../libQtGui.so.4(QWidgetBackingStore::paintSiblingsRecursive(QPaintDev*
*Module: …….LauncherMain*


When i analyze the  core files from the application i saw these lines at
the top of trace:

*#0  QRasterPaintEngine::updateClipPath (this=0x2bf73110, path=@0x61a650,
> op=Qt::NoClip)*
> *    at ../../include/QtGui/../../src/gui/painting/qmatrix.h:49*
> *#1  0x2bf83c48 in QRasterPaintEngine::begin (this=0x52bb50,
> device=0x61a650) at painting/qpaintengine_raster.cpp:754*
> *#2  0x2bf3e5a8 in QPainter::begin (this=0x7fc20918, pd=0x1) at
> painting/qpainter.cpp:1123*
> *#3  0x2bf3fcd4 in QPainter::QPainter (this=0x7fc20918, pd=0x486a50) at
> painting/qpainter.cpp:847*
> *#4  0x2b9c4a20 in ……………………..::paintEvent (this=0x486a48) at
> ../…………………/widget/src/…………………...cpp:27*
>


As you can see there pd is ‘0x1’ and i think it is a strange behavior.

I started from those points using the trace above and tried to understand
what was the problem. It looks like something happens to the "device id"
which is given to the painter class in its constructor because it is shown
as "pd=0x1" ( which is a weird pointer ) even if given device id was
"0x486a50". It is changing somewhere in the "begin" method from QPainter
but i do not know why it is changing and whether it is related with the
crash.

In QrasterPaintEngine class there is method ‘redirected’ and its return
value is assigned to pd variable. But i really understand the real meaning
of that method. If you have something to say about those points just shoot
it, because i am in the middle of something blind street.

Thanks a lot.


-- 
İsmail Alper Sağlam-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160114/daf4d244/attachment.html>


More information about the Interest mailing list