[PyQt] Re: Crash with shortcircuit signals

Giovanni Bajo rasky at develer.com
Thu Jul 19 19:56:27 BST 2007


On 18/07/2007 22.43, Phil Thompson wrote:

>>>>> 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...
>>>> I can only see one place that a PyQtProxy is explicitly deleted. Can
>>>> you try changing the "delete up" in sipQtDestroyUniversalSlot() to
>>>> "up->disable()" instead of your fix.
>>> It worked. One nit: disable() was a private member, so I changed it to
>>> public.
>> Too fast: I was getting again an infinite loop... and the fix I found
>> was to NULLify the nextup and prevup pointers in the disable() method,
>> after removing the PyQtProxy from the global list.
>>
>> Does it make any sense to you?
> 
> No.
> 
> Are you sure you fully backed out your own fix? My fix is in the current 
> snapshot.

Yes I am sure. Your vanilla snapshot triggers an infinite loop. If you nullify 
the two pointers, everything works.

> Can you detect the infinite loop and generate a backtrace?

Sure, but I doubt it'll be before next Monday.
-- 
Giovanni Bajo



More information about the PyQt mailing list