[PyQt] crash in sip.cast

Nathan Cournia cournia at gmail.com
Wed Mar 17 01:32:57 GMT 2010


Hi,

The following script segfaults:

import sys
import sip
from PyQt4.QtGui import *

a = QApplication(sys.argv)

# create a menu
b = QMenu()

# cast it to a widget
c = sip.cast(b, QWidget)

# cast the widget, which is really a menu, back to a menu.
# this line crashes
d = sip.cast(c, QMenu)

Here's the stack trace...

#0  0x5573cf09 in cast (self=0x0, args=0x83c570c) at siplib.c:907
#1  0x555eccf0 in PyCFunction_Call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#2  0x5566465a in call_function () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#3  0x55660f83 in PyEval_EvalFrameEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#4  0x55662980 in PyEval_EvalCodeEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#5  0x5565b76c in PyEval_EvalCode () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#6  0x5568a3a2 in run_mod () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#7  0x5568a328 in PyRun_FileExFlags () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#8  0x556562f3 in builtin_execfile () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#9  0x555eccf0 in PyCFunction_Call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#10 0x5566465a in call_function () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#11 0x55660f83 in PyEval_EvalFrameEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#12 0x55662980 in PyEval_EvalCodeEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#13 0x5565b76c in PyEval_EvalCode () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#14 0x5566620a in exec_statement () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#15 0x5565ed88 in PyEval_EvalFrameEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#16 0x55662980 in PyEval_EvalCodeEx () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#17 0x555d61ca in function_call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#18 0x555a5810 in PyObject_Call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#19 0x555bbeae in instancemethod_call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#20 0x555a5810 in PyObject_Call () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0
#21 0x555a5e03 in PyObject_CallMethodObjArgs () from
/usr/apps/python/python-2.6.1/lib/libpython2.6.so.1.0

The following line in siplib.c:907:cast() is crashing:

    if ((addr = sip_api_get_cpp_ptr(sw, type->type)) == NULL)
        return NULL;

Above, "type" (the one left of ->) is NULL.

I'm using sip-4.10, PyQt-x11-gpl-4.7, and Qt 4.5.3.

Am I using sip.cast incorrectly?  Any help would be greatly appreciated.

Thanks,

nathan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100316/ffbd2deb/attachment.html>


More information about the PyQt mailing list