[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