[PyKDE] Problems with QDomDocument.setContent

Phil Thompson phil at riverbankcomputing.co.uk
Sun Jan 16 18:14:41 GMT 2005


On Sunday 16 January 2005 5:59 am, Ricardo Javier Cardenes Medina wrote:
> Hi list,
>
> Phil, some days ago I got this bug on Debian's PyQt package:
>
>   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289212&repeatmerged=no
>
> The bug submitter claimed that using PyQt 3.13, he can hang a program
> with a simple bit of code like this:
>
>   from qt import *
>   from qtxml import *
>   dom = QDomDocument('plist')
>   f = QFile('rdf.xml')
>   dom.setContent(f)
>
> where 'rdf.xml' is a valid existing XML file (if it doesn't exists the
> code doesn't hangs). I've reproduced it, and tried the matching C++
> version of the code (using Qt 3.3.3), with full arguments as PyQt does,
> just to make sure it wasn't a Qt problem:
>
>   #include <qdom.h>
>   #include <qfile.h>
>
>   int main() {
>           QFile *f = new QFile("rdf.xml");
>           QDomDocument *dd = new QDomDocument("plist");
>           QString *emsg = new QString();
>           int eline, ecol;
>
>           dd->setContent(f, emsg, &eline, &ecol);
>   }
>
>
> Not that it does anything specially useful, but it doesn't hang. The
> current version of Debian's package for PyQt has been built with SIP
> 4.1.1, and I've debugged it a bit. The code hangs when calling to the
> Qt native method:
>
>   res = sipCpp -> QDomDocument::setContent(a0,emsg,&eline,&ecol);
>
> Or at least it seems. An strace reveals an endless loop of futexes calls
> like these:
>
>   ...
>   futex(0x81a3d90, FUTEX_WAKE, 1, {0, 135508336}) = 0
>   futex(0x81a3d90, FUTEX_WAKE, 1, {0, 135508336}) = 0
>   futex(0x81a3d90, FUTEX_WAKE, 1, {0, 135508336}) = 0
>   ...
>
> The submitter says that previous versions (3.11, 3.12) worked without
> problems. I've checked at least with 3.12, that were built with SIP
> 4.0.1 (3.11 were built with SIP3). The produced C++ code for the
> relevant code in 3.12 matches exactly with 3.13, and it doesn't hang,
> just like the bug submitter stated.
>
> Building 3.13 with the latest SIP snapshot doesn't help it a bit.

The fix will be in tonight's PyQt snapshot.

Thanks,
Phil




More information about the PyQt mailing list