[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