On Thu, 11 May 2006 17:13:54, Mike Rovner wrote: > David Boddie wrote: > > It looks like something expects to be deleted or garbage collected when > > the QApplication is destroyed, but that maybe the Python interpreter has > > already been shut down (interp is zero in frame #0). > > Agree. > > > If you can show us your .sip file for the QWindowsStyle binding then > > maybe it will become clearer just what's happening. > > I did ;) It's included in my original message.
Looks like I didn't scroll down far enough. :-/ I think your original backtrace probably gives us the information we need. Still, I compiled SIP, PyQt, and ExtraStyles (my name for the new module) with debugging symbols, and got the following backtrace: #0 PyThreadState_New (interp=0x0) at Python/pystate.c:194 #1 0xb7ee1560 in PyGILState_Ensure () at Python/pystate.c:489 #2 0xb7e21c8c in sip_api_common_dtor (sipSelf=0xb7b40b2c) at siplib.c:3014 #3 0xb674a860 in ~sipQWindowsStyle (this=0x8230768) at sipExtraStylesQWindowsStyle.cpp:46 #4 0xb6e05400 in ~QApplication (this=0x80faf90) at kernel/qapplication.cpp:854 #5 0xb780b198 in ~sipQApplication (this=0x80faf90) at sipQtGuipart3.cpp:47410 #6 0xb752018c in sipDelayedDtors (ddlist=0x8142c00) at qapplication.sip:396 #7 0xb7e1e76c in finalise () at siplib.c:883 #8 0xb7ee366a in Py_Finalize () at Python/pythonrun.c:1564 #9 0xb7eea3b3 in Py_Main (argc=1, argv=0xbf854964) at Modules/main.c:504 #10 0x08048654 in main (argc=2, argv=0xbf854964) at Modules/python.c:23 Frame 4 looks interesting: (gdb) f 4 #4 0xb6e05400 in ~QApplication (this=0x80faf90) at kernel/qapplication.cpp:854 854 delete QApplicationPrivate::app_style; Current language: auto; currently c++ (gdb) l 849 QApplicationPrivate::set_pal = 0; 850 app_palettes()->clear(); 851 delete QApplicationPrivate::app_font; 852 QApplicationPrivate::app_font = 0; 853 app_fonts()->clear(); 854 delete QApplicationPrivate::app_style; 855 QApplicationPrivate::app_style = 0; 856 delete QApplicationPrivate::app_icon; 857 QApplicationPrivate::app_icon = 0; 858 #ifndef QT_NO_CURSOR So, the style is being deleted here, so in frame 3 the QWindowsStyle wrapper is destroyed. I think the problem is that all this is happening after Python has been shut down, maybe because QApplication is defined using the /DelayDtor/ annotation in sip/QtGui/qapplication.sip. Just to test my theory, I removed the annotation (but not the annotation for QCoreApplication), and I didn't get a segfault on exit. Maybe someone with more experience can suggest a workaround, or perhaps there's room for some changes in the QApplication wrapper. I expect that there was a good reason to use the annotation there, though perhaps just keeping it for QCoreApplication is sufficient to solve any previous issues. David _______________________________________________ PyKDE mailing list [email protected] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
