[PyQt] Weird crashing
David Boddie
david at boddie.org.uk
Mon Oct 29 23:22:02 GMT 2007
On Monday 29 October 2007 15:26:17 -0400, Jason Hihn wrote:
> I have an application that works 90% of the time. It is rock-solid on
> desktops, but the 10% is laptop installed base. The laptops seem to have
> two issues:
>
> On 1 computer in particular, python.exe crashes whenever you open a
> document outside of the application, such as an Excel file, but it does nto
> crash when a browser is opening cache files. Right after the double click
> but before excel has actually opened, the application crash dialog comes
> up. This violates the notion of private address space and process
> separation. (This is on XP.)
I have no idea how you would track down this kind of bug. If it's a Python
rather than PyQt problem, you might get some answers on one of the python.org
hosted mailing lists. :-(
> The other crazy problem is with QHttp, as far as I can tell. We have a
> function that does a simple get() to obtain the latest version number of
> the software (to see if an update is available) in the "background". This
> request is performed, but it seems when the response is received it crashes
> the program. Weirder yet, the affected laptops seem to have Verizon
> wireless cards, but not in every case, just most of them. It does not seem
> to matter if they are using VZW or a CAT5 cable.
See my suggestion below, but bear in mind that it may not help if there's
something fundamentally wrong with some other software or hardware.
> I can't imagine what could be causing these issues, I am hoping someone out
> there could see a potential conflict, or some GIL knowledge that I am
> lacking, or if there is some debugging technique that I can use.
If you can produce a minimal working example that exhibits the problem then
that might help. If it's a bug in Qt then it would help if the example is
written in C++, but the HTTP example supplied with Qt might serve this
purpose nicely.
> AFAIK, all this is happening in one thread. The illusion is multitasking
> is created by signals/slots. The crashes were reported in the original
> version using 4.2.3, and are still present in 4.3.1.
>
> Update code:
>
> self.x=QHttp('www.mysite.com')
> self.buffer=QBuffer(self.bytes, self.x)
>
> self.buffer.open(QIODevice.ReadWrite)
> QObject.connect(self.x, SIGNAL('done(bool)'), self.versionCheckDone)
> self.x.get('/version.txt')
>
> def versionCheckDone(self, b):
>
> data=str(self.x.readAll())
> print 'data:', data
Here, I think you should probably read the contents of the buffer instead:
def versionCheckDone(self, b):
data=str(self.buffer.data())
print 'data:', data
You could also seek and read the buffer if you prefer to do things that way.
David
More information about the PyQt
mailing list