Great! Using this reactor with the latest PyQt snapshot, I don't get the crash anymore!

I not sure why but with this reactor, closing the last window doesn't close the application. Ctrl-Q works fine and is the only way I can quit a GUI app.

I made sure that quitLastWindowClosed is set. The Signal lastWindowClosed is not emitted either. Any idea?

On the mac, running the following code and closing the window doesn't quit the application:

from qt4reactor import install;
from PyQt4.QtCore import *
from PyQt4.QtGui import *

app = QApplication([])

install()

if __name__ == '__main__':

   widget = QWidget()
   widget.show()

   from twisted.internet import reactor
   reactor.run()


On Oct 9, 2009, at 9:05 PM, Glenn Tarbox, PhD wrote:

You may want to try this reactor:

https://launchpad.net/qt4reactor

I've just seen some other traffic on this topic... I'll dig into it a bit more this weekend

-glenn

On Fri, Oct 9, 2009 at 3:40 PM, Christian Caron <[email protected]> wrote: I used to have this crash rather infrequently but it got more frequent when I moved to PyQt 4.6 / Snow Leopard.

Configuration
---------------------
Mac OSX 10.6.1
Qt 4.5.3
sip-4.9.1-snapshot-20091007
PyQt-mac-gpl-4.6.1-snapshot-20091007

Crash
-----------

My investigation so far shows that PyQtProxy::unislot deletes memory that was already deleted (in attempting to self destruct).

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000028
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0 QtCore.so 0x00000001030db619 PyQtProxy::unislot(void**) + 133 1 QtCore.so 0x00000001030db6f5 PyQtProxy::qt_metacall(QMetaObject::Call, int, void**) + 119 2 QtCore 0x00000001005c1183 QMetaObject::activate(QObject*, int, int, void**) + 675 3 QtCore.so 0x000000010302ae97 sipQTimer::timerEvent(QTimerEvent*) + 77 4 QtCore 0x00000001005bf19e QObject::event (QEvent*) + 446 5 QtCore.so 0x000000010302ae2d sipQTimer::event(QEvent*) + 77 6 QtGui 0x00000001019fd3ed QApplicationPrivate::notify_helper(QObject*, QEvent*) + 189 7 QtGui 0x0000000101a0405e QApplication::notify(QObject*, QEvent*) + 238 8 QtGui.so 0x000000010136e1d1 sipQApplication::notify(QObject*, QEvent*) + 95 9 QtCore 0x00000001005aec3c QCoreApplication::notifyInternal(QObject*, QEvent*) + 124

Repro
-----------
Using the qt4reactor found here: 
http://twistedmatrix.com/trac/browser/sandbox/therve/qt4reactor.py?rev=22736&format=txt
You may need to run the program a few times for it to crash.

import qt4reactor
qt4reactor.install()

# Control-C
from twisted.internet import reactor
import signal; signal.signal(signal.SIGINT, lambda *args:reactor.stop ())

# Get web page.
from twisted.web import client
url = 'http://www.google.com'
client.getPage(url)

reactor.run()

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt



--
Glenn H. Tarbox, PhD || 206-274-6919 || [email protected] - xmpp || ghtdak - aim,jabber,IRC,yahoo


_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to