[PyQt] Re: Crash with shortcircuit signals
rasky at develer.com
Tue Jul 17 14:34:02 BST 2007
On 7/16/2007 2:36 PM, Phil Thompson wrote:
> This will be fixed in tonight's PyQt snapshot.
> The proxy created to handle the signal was being incorrectly reused by a new
> QObject created at the same address as the one the proxy was created for.
> Because there is no event processing going on, the proxy was not getting
> deleted - because it was waiting for a deleteLater() to be acted on.
I now get other crashes: from the debug, it seems like an instance of
PyQtProxy which is already deleted is still part of the global list
(uniproxies). Using debug builds of MS CRT, C++ instances which are
deleted are filled with 0xFEFEFEFE, so I'm pretty sure of this symptom.
I had a look at your fix, and you moved the code to remove the PyQtProxy
instance from the global list to the new disable() slot. Thus, if an
instance of PyQtProxy is deleted directly without going through the
slot, it will still be presente in the global list.
I copied the list removal code back into the destructor (keeping a duped
copy in the disable() slot), and it seems to work.
Do you agree on this fix? Testcases are really hard and tiresome to
extract so I'd rather avoid it if it's not really really necessary...
More information about the PyQt