Hi Vicent, Il giorno Wed, 19 Jan 2011 09:46:19 +0000 Vicent Mas <[email protected]> ha scritto:
> 2011/1/19 Antonio Valentino <[email protected]>: > > Hi Vicent, > > > > Il giorno Tue, 18 Jan 2011 19:32:57 +0000 > > Vicent Mas <[email protected]> ha scritto: > > > >> Hi, > >> > >> it seems there is a bug in QMainWindow.createPopupMenu. In my > >> system (Windows XP, Python 2.6, PyQt 4.8.2 installed using the > >> Windows installer), when I run the attached script and close the > >> created QMainWindow, an error dialog appears saying that > >> python.exe has found a problem and must be closed. > >> > >> Could someone confirm this behavior? Thanks. > > > > Segmentation fault on: > > > > GNU/Linux x86_64 2.6.35 (Ubuntu 10.10) > > Python 2.6.6 > > PyQt4 4.7.4 > > Qt4 4.7.0 > > > > > > No problem if I add > > > > del toolbars_submenu > > > > at the very and of the program > > It seems that having around references to objects that are child of > > the mainwin triggers the problem. > > > > ciao > > > > -- > > Antonio Valentino > > > > Hi, > > Antonio, your workaround works here. Thanks a lot. Anyway I think the > current behavior is buggy. Even if I set the WA_DeleteOnClose flag on > the main window (which I expected to delete the main window and its > children when the window is closed) the script crashes if I don't > apply your workaround. I agree that the behavior is buggy (or at least unexpected). If my understanding is correct the problem here is that python tries to delete toolbars_submenu and file_toolbar objects *after* deletion of main_window that, in turn, deletes all its children. So when python deletes toolbars_submenu and file_toolbar the underlying C++ object have already been deleted by the main_window destructor and hence the segfault. Adding WA_DeleteOnClose doesn't change this. If I remember well (I'm not sure) the order in which python deletes objects that go out of the scope is not specified, so there are situations in which the bug is not triggered. If you add the following lines at the end of the script (the original one) del main_window print 'done' you should be sure the bug, if any, is triggered. If hypotheses are correct even Nick should get a segfaut now. ciao -- Antonio Valentino _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
