[PyKDE] Crashing problems, suggestions?

Kevin Cureton kevin at bang-splat.com
Thu Mar 1 20:36:36 GMT 2007


Since I converted my application from PyQt3 to PyQt4, I've run into  
some issues with the threading.

I ran into the deadlock problems a while back and managed to avoid it  
by only sending signals from QThreads to the main thread. The main  
thread, instead of sending signals or events to the QThreads, would  
instead hand them work via a thread-safe queue I wrote. Doing that  
avoided the deadlock problem but appeared to uncover another issue.  
Consistent crashes.

I'm not going to claim this is a PyQt or Qt issue. It could very well  
be my failure to protect some resource with a mutex. However, after  
various attempts over the past month, I need to take some focused  
time and resolve this issue. I've attached a crash trace. We are  
running the application on both Mac and Linux and similar results  
(though I don't have a Linux trace available currently).

I'm looking for some ideas on how to approach debugging this problem  
(or web pages that can help). I'm hoping to create a small, scoped  
test case that demonstrates this problem and get that sent to the  
list. Until then, any ideas or thoughts on how to proceed would be  
greatly appreciated.

I am currently running Qt 4.2.2, and the sip and PyQT4 snapshots from  
20070227 on both a Powerbook (PPC, 10.4.8) and a Mac Pro (Intel,  
10.4.8).

--kev


Date/Time:      2007-03-01 12:24:00.858 -0800
OS Version:     10.4.8 (Build 8N1430)
Report Version: 4

Command: Python
Path:    /Library/Frameworks/Python.framework/Versions/2.5/Resources/ 
Python.app/Contents/MacOS/Python
Parent:  tcsh [547]

Version: 2.5a0 (2.5alpha0)

PID:    1862
Thread: 0

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x0000001c

Thread 0 Crashed:
0   QtCore              	0x013b17fb QObject::thread() const + 9
1   QtCore              	0x013a7790  
QCoreApplicationPrivate::checkReceiverThread(QObject*) + 22
2   QtGui               	0x0284e4ef QApplication::notify(QObject*,  
QEvent*) + 151
3   QtGui.so            	0x022fbc5b sipQApplication::notify(QObject*,  
QEvent*) + 97
4   QtGui               	0x0288600c  
QApplicationPrivate::globalEventProcessor(OpaqueEventHandlerCallRef*,  
OpaqueEventRef*, void*) + 1858
5   com.apple.HIToolbox 	0x92dd986b DispatchEventToHandlers 
(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093
6   com.apple.HIToolbox 	0x92dd8f10 SendEventToEventTargetInternal 
(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304
7   com.apple.HIToolbox 	0x92dd8dd5 SendEventToEventTargetWithOptions  
+ 55
8   com.apple.HIToolbox 	0x92de0357 ToolboxEventDispatcherHandler 
(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 357
9   com.apple.HIToolbox 	0x92dd9c22 DispatchEventToHandlers 
(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 2044
10  com.apple.HIToolbox 	0x92dd8f10 SendEventToEventTargetInternal 
(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304
11  com.apple.HIToolbox 	0x92de01f0 SendEventToEventTarget + 56
12  QtGui               	0x0288027c qt_mac_send_event 
(QFlags<QEventLoop::ProcessEventsFlag>, OpaqueEventRef*,  
OpaqueWindowPtr*) + 122
13  QtGui               	0x0288ca1e QEventDispatcherMac::processEvents 
(QFlags<QEventLoop::ProcessEventsFlag>) + 594
14  QtCore              	0x013a74a8 QEventLoop::processEvents 
(QFlags<QEventLoop::ProcessEventsFlag>) + 54
15  QtCore              	0x013a7686 QEventLoop::exec 
(QFlags<QEventLoop::ProcessEventsFlag>) + 132
16  QtCore              	0x013aa385 QCoreApplication::exec() + 179
17  QtGui.so            	0x022feeeb meth_QApplication_exec_ + 97
18  org.python.python   	0x00297818 PyEval_EvalFrameEx + 18969  
(ceval.c:3566)
19  org.python.python   	0x0029967e PyEval_EvalCodeEx + 1819 (ceval.c: 
2833)
20  org.python.python   	0x0022efd7 function_call + 320 (funcobject.c: 
517)
21  org.python.python   	0x0020dec3 PyObject_Call + 45 (abstract.c:1860)
22  org.python.python   	0x002159e4 instancemethod_call + 401  
(classobject.c:2493)
23  org.python.python   	0x0020dec3 PyObject_Call + 45 (abstract.c:1860)
24  org.python.python   	0x00295b49 PyEval_EvalFrameEx + 11594  
(ceval.c:3777)
25  org.python.python   	0x002984e0 PyEval_EvalFrameEx + 22241  
(ceval.c:3652)
26  org.python.python   	0x002984e0 PyEval_EvalFrameEx + 22241  
(ceval.c:3652)
27  org.python.python   	0x0029967e PyEval_EvalCodeEx + 1819 (ceval.c: 
2833)
28  org.python.python   	0x00299832 PyEval_EvalCode + 87 (ceval.c:500)
29  org.python.python   	0x002bc7e8 PyRun_FileExFlags + 264  
(pythonrun.c:1264)
30  org.python.python   	0x002bcba9 PyRun_SimpleFileExFlags + 640  
(pythonrun.c:870)
31  org.python.python   	0x002ca1e4 Py_Main + 2915 (main.c:496)
32  org.python.python   	0x00001f8e 0x1000 + 3982
33  org.python.python   	0x00001eb5 0x1000 + 3765

--
Kevin Cureton
Co-Founder
Mind The Gap, Inc.
kevin at animationpipeline.com
http://www.animationpipeline.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20070301/d73be879/attachment.html


More information about the PyQt mailing list