[PyQt] Problems creating QApplication instance (backdoor in addTypeSlots)

Marcin Cieslak saper at saper.info
Tue Aug 24 14:47:34 BST 2010


On Thu, 5 Aug 2010, Phil Thompson wrote:

> On Wed, 4 Aug 2010 15:11:46 +0000, Marcin Cieslak <saper at saper.info>
> wrote:
>> Hello,
>>
>> I am pretty new to Qt4 and SIP but I try to find a problem
>> with the startup of the Py-Qt4 application (Hewlett Packard
>> printer toolbox utility from hp-lip package) on my FreeBSD box.
(...)

>> Simple "from PyQt4.QtGui import QApplication" fails with SIGSEGV:
>
> I don't see how that backtrace could be produced in the first place as
> sipEnumType_alloc() would never be called in that situation. I assume
> something has already gone wrong before the call to PyObject_Call().
>
> In tonight's snapshot I've changed things so that an assert() will fail if
> there is an attempt to use the back door recursively - but it works fine
> for me.

It turns out that somehow QtGui module interpreted :

static sipEncodedTypeDef supers_QApplication[] = {{33, 0, 1}};

in the way that pointed to "PyQt4.Qt.Version" enum (instead of 
"QCoreApplication" class). Looked like a complete mismatch
of modules between the generation time and startup time.

Whatever it was, I have re-built everything again with debug symbols
and now it works fine. Strange, I am sure I have rebuilt pyqt few
times before.

Thank you for your help.

--Marcin


More information about the PyQt mailing list