Re: Wx::Perl seems to be leaking memory

Steve Cookson <[email protected]> Thu, 21 May 2015 12:00:33 -0300
Newsgroups gmane.comp.lang.perl.wxperl
Message-ID <[email protected]>
Thanks for this.  Actually, my timers run all the time in  the background.

On 21/05/15 10:54, Mark Dootson wrote:
> Just one other thing that may not be obvious unless you have read 
> wxWidgets docs for wxTimer, Wx::Timer objects must be explicitly 
> destroyed.
>
> e.g. $timer->Destroy;
>
> However, in the case of Wx::Timer the ->Destroy call deletes the 
> wxWidgets object immediatley.
>
> No point in you testing this out too much until I have fixed the 
> Wx::TimerEvent SV leak problem.
>
> Mark
>
>
> On 21/05/2015 14:50, Mark Dootson wrote:
>> Hi Steve,
>>
>> $app->Yield does not cause 'idle time' to happen - so 'Destroyed' 
>> objects are not cleaned up during that call. As you have seen, on 
>> multiple calls the total number of SVs does not increase so no 
>> memeroy leak there.
>>
>> However, in constructing an example to demonstrate this I think I may 
>> have found the cause of your issues.
>>
>> Every Wx::Timer event or call to an overridden 'Notify' method leaks 
>> 1 SV. I don't have a solution but will work on it over the weekend.
>>
>> Regards
>>
>> Mark
>>
>>
>> On 21/05/2015 11:54, Steve Cookson wrote:
>>> Hmm..,
>>>
>>> On 20/05/15 17:49, Steve Cookson - gmail wrote:
>>>> If I create a few controls in a dialog, delete the dialog, use 
>>>> $app->Yield for the background processing to take place, I still 
>>>> end up with more Perl objects after the deletion than before. 
>>>
>>> Well actually, although the count builds up for the first two 
>>> calls.  After the third call, although it says it's loosing 5 
>>> pointers per call, it is not, because the total number of pointers 
>>> remains the same.  So I suppose that is OK.
>>>
>>> I have switched off my background processing using Wx::Timer and all 
>>> my memory creep stops.  So unless you think the 5 pointers matter 
>>> (and maybe it doesn't), I'm going to switch to looking at the 
>>> Wx::Timer background code as potentially a more productive avenue.
>>>
>>> Thanks
>>>
>>> Steve.
>>
>
>