[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyKDE] PyQt 3.13: crash on exit when using QCanvasSprite
From:       "Bryan O'Sullivan" <bos () serpentine ! com>
Date:       2004-10-06 21:44:31
Message-ID: 1097099072.14591.26.camel () serpentine ! internal ! keyresearch ! com
[Download RAW message or body]

I have a crashing problem with PyQt when I draw a QCanvasSprite.  More
precisely, it appears to occur during shutdown after I use one.

I've attached a small test program that demonstrates the problem.  To
reproduce, run "python view.py some-image-file.jpg", close the window it
displays (which should cause the app to quit), then see the crash.

I've also attached gdb's backtrace, although it's not very useful, as
nothing is compiled with debug information enabled.

System details: x86, Fedora Core 2, sip 4.1.1, PyQt 3.13 (built with sip
4.1, in case that matters)

	<b

["view.py" (view.py)]

#!/usr/bin/python

import os
import qtcanvas
import qt
import sys


class Viewer(qtcanvas.QCanvasView):
    def __init__(self, filename):
        qtcanvas.QCanvasView.__init__(self, None)
        self.setCaption(os.path.basename(filename))
        self.view = qtcanvas.QCanvasView(self)
        self.canvas = qtcanvas.QCanvas(self)
        self.setCanvas(self.canvas)
        self.pix = qtcanvas.QCanvasPixmapArray(filename)
        i = self.pix.image(0)
        self.canvas.resize(i.width(), i.height())
        self.sprite = qtcanvas.QCanvasSprite(self.pix, self.canvas)
        self.sprite.show()
        self.update()
        self.resize(self.sizeHint())

class App(qt.QApplication):
    def __init__(self, args):
        qt.QApplication.__init__(self, args)
        self.ws = []
        args = args[1:]
        for a in args:
            w = Viewer(a)
            self.ws.append(w)
            w.show()
        if self.ws:
            self.setMainWidget(self.ws[0])

if len(sys.argv) < 2:
    print >> sys.stderr, ('Usage: python %s image1 [...]' %
                          os.path.basename(sys.argv[0]))
    sys.exit(1)

app = App(sys.argv)
app.exec_loop()

["backtrace.txt" (backtrace.txt)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1075357184 (LWP 18270)]
0x40931ebc in QCanvasSprite::topEdge () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
(gdb) bt
#0  0x40931ebc in QCanvasSprite::topEdge ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#1  0x409323f3 in QCanvasSprite::removeFromChunks ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#2  0x40936f7d in QCanvasSprite::~QCanvasSprite ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#3  0x4048baa1 in sipQCanvasSprite::~sipQCanvasSprite ()
   from /usr/lib/python2.3/site-packages/qtcanvas.so
#4  0x4092b95a in QCanvas::~QCanvas () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#5  0x4049b2e4 in sipQCanvas::~sipQCanvas ()
   from /usr/lib/python2.3/site-packages/qtcanvas.so
#6  0x4075d66d in QWidget::~QWidget () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#7  0x4083f815 in QScrollView::~QScrollView ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#8  0x409328af in QCanvasView::~QCanvasView ()
   from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#9  0x4048f232 in sipQCanvasView::~sipQCanvasView ()
   from /usr/lib/python2.3/site-packages/qtcanvas.so
#10 0x4049ab0e in sipQCanvasView::sipEmit_verticalSliderReleased ()
   from /usr/lib/python2.3/site-packages/qtcanvas.so
#11 0x40ba4ad0 in sipSaveMethod () from /usr/lib/python2.3/site-packages/sip.so
#12 0x080857ba in PyType_GenericNew ()
#13 0x0806a0ff in PyList_Append ()
#14 0x080751fc in PyDict_Next ()
#15 0x40ba4ade in sipSaveMethod () from /usr/lib/python2.3/site-packages/sip.so
#16 0x080857ba in PyType_GenericNew ()
#17 0x08074879 in PyDict_New ()
#18 0x08074ca7 in PyDict_SetItem ()
#19 0x080eafbe in _PyModule_Clear ()
#20 0x080bf1ca in PyImport_Cleanup ()
#21 0x080c7b2a in Py_Finalize ()
#22 0x08055270 in Py_Main ()
#23 0x08054cf9 in main ()


_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic