No registered users in community xowiki
in last 10 minutes
in last 10 minutes
Re: [Xotcl] memory leak problem
From: Gustaf Neumann <neumann_at_wu.ac.at>
Date: Sat, 24 Oct 2009 19:40:09 +0200
Dear Victor,
The bug is fixed in the xotcl git repository. As described before,
the bug existed only when XOTcl was compiled against Tcl 8.4
and loaded into some 8.5 or newer version of Tcl. The bug was located
in the XOTcl var resolver (introduced in XOTcl 1.6.3) and damaged
in the above constellation the reference count of variables.
The problem affects primarily the user of the binary ActiveState packages,
since all other distros i know compile extensions against the same version
of the library.
I will release XOTcl 1.6.5 soon (most likely within a week).
Users having compiled XOTcl against the same major
release (e.g. 8.4. or 8.5) won't have to upgrade.
Best regards
-gustaf neumann
Gustaf Neumann schrieb:
> Dear Victor and all
>
> A small update:
> - the problem has nothing to do with 64 bit
> - the problem has nothing to do parametercmd, but with
> namespaced variables (even worse)
> - the problem does not show up, when both xotcl and tcl are compiled
> against tcl 8.4.* or tcl 8.5.*
> - the problem shows only up, when xotcl is compiled against tcl 8.4 and
> loaded into a tclsh compiled with tcl 8.5
> - the problem is related to varReform, tcl refuses to delete the variables
> when TclDeleteVars() is called. It is not a tcl bug, but most likely
> related with the "forward-compatible" mode of xotcl (tcl 8.5
> variables are quite different to 8.4, but at the time xotcl is compiled
> against tcl 8.4, it does not know anything about the new variable
> structures/semantics; it tries hard to behave correctly, but obviouly,
> not hard enough).
>
> normally, i would be inclined to say "please take a matching version"
> (use xotcl compiled for 8.5 with a tclsh compiled with 8.5, etc),
> but since it is getting more and more likely, that xotcl 2.0 will require
> tcl 8.5 or newer, i'll try to look into the problem further, probably over
> the weekend
>
> all the best
> -gustaf neumann
>
> Gustaf Neumann schrieb:
>
>> Hmm,
>>
>> a quick test shows that it runs in constant memory (1.8 MB) with xotcl
>> 1.6.3 and
>> xotcl 1.6.4 under Mac OS X Leopard with Tcl 8.5.7. i just modified the
>> script
>> slightly to make it a complete script (see below).
>>
>> will check tomorrow on more platforms.
>>
>> -gustaf neumann
>>
>>
>> ==========================
>> set i 0
>> time {lappend ::parameter_list parameter[incr i]} 100
>>
>> Class X
>> X instproc init args {
>> my requireNamespace; ### I need that
>> foreach p [set ::parameter_list] {
>> my parametercmd $p
>> my $p {}
>> }
>> next
>> }
>>
>> time {X x; x destroy} 1000000
>> ==========================
>>
>> Victor Mayevski schrieb:
>>
>>
>>> Hello,
>>>
>>> I am using XOTcl 1.6.3, on 64bit Linux platform, with ActiveState
>>> 8.6.b2 distribution. The distribution itself is 32bit. I also tried
>>> and have the same problem with 32bit ActiveState 8.5.7 version.
>>>
>>> The simplest way to reproduce the problem is to do the following:
>>>
>>> Class X;
>>>
>>> set parameter_list {parameter1 parameter2 .... parameter100}; ### 100
>>> or so values
>>>
>>> X instproc init args {
>>> my requireNamespace; ### I need that
>>> foreach p [set ::parameter_list] {
>>> my parametercmd $p;
>>> my $p {};
>>> };
>>> next;
>>> };
>>>
>>> #then run the following
>>>
>>> time {X x; x destroy} 1000000
>>>
>>>
>>> ### the above line eats up a lot of memory and it is not being
>>> released during destruction of an instance.
>>>
>>>
>>> Thanks.
>>> _______________________________________________
>>> Xotcl mailing list
>>> Xotcl_at_alice.wu-wien.ac.at
>>> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>>>
>>>
>>>
>> _______________________________________________
>> Xotcl mailing list
>> Xotcl_at_alice.wu-wien.ac.at
>> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>>
>>
>
> _______________________________________________
> Xotcl mailing list
> Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>
Date: Sat, 24 Oct 2009 19:40:09 +0200
Dear Victor,
The bug is fixed in the xotcl git repository. As described before,
the bug existed only when XOTcl was compiled against Tcl 8.4
and loaded into some 8.5 or newer version of Tcl. The bug was located
in the XOTcl var resolver (introduced in XOTcl 1.6.3) and damaged
in the above constellation the reference count of variables.
The problem affects primarily the user of the binary ActiveState packages,
since all other distros i know compile extensions against the same version
of the library.
I will release XOTcl 1.6.5 soon (most likely within a week).
Users having compiled XOTcl against the same major
release (e.g. 8.4. or 8.5) won't have to upgrade.
Best regards
-gustaf neumann
Gustaf Neumann schrieb:
> Dear Victor and all
>
> A small update:
> - the problem has nothing to do with 64 bit
> - the problem has nothing to do parametercmd, but with
> namespaced variables (even worse)
> - the problem does not show up, when both xotcl and tcl are compiled
> against tcl 8.4.* or tcl 8.5.*
> - the problem shows only up, when xotcl is compiled against tcl 8.4 and
> loaded into a tclsh compiled with tcl 8.5
> - the problem is related to varReform, tcl refuses to delete the variables
> when TclDeleteVars() is called. It is not a tcl bug, but most likely
> related with the "forward-compatible" mode of xotcl (tcl 8.5
> variables are quite different to 8.4, but at the time xotcl is compiled
> against tcl 8.4, it does not know anything about the new variable
> structures/semantics; it tries hard to behave correctly, but obviouly,
> not hard enough).
>
> normally, i would be inclined to say "please take a matching version"
> (use xotcl compiled for 8.5 with a tclsh compiled with 8.5, etc),
> but since it is getting more and more likely, that xotcl 2.0 will require
> tcl 8.5 or newer, i'll try to look into the problem further, probably over
> the weekend
>
> all the best
> -gustaf neumann
>
> Gustaf Neumann schrieb:
>
>> Hmm,
>>
>> a quick test shows that it runs in constant memory (1.8 MB) with xotcl
>> 1.6.3 and
>> xotcl 1.6.4 under Mac OS X Leopard with Tcl 8.5.7. i just modified the
>> script
>> slightly to make it a complete script (see below).
>>
>> will check tomorrow on more platforms.
>>
>> -gustaf neumann
>>
>>
>> ==========================
>> set i 0
>> time {lappend ::parameter_list parameter[incr i]} 100
>>
>> Class X
>> X instproc init args {
>> my requireNamespace; ### I need that
>> foreach p [set ::parameter_list] {
>> my parametercmd $p
>> my $p {}
>> }
>> next
>> }
>>
>> time {X x; x destroy} 1000000
>> ==========================
>>
>> Victor Mayevski schrieb:
>>
>>
>>> Hello,
>>>
>>> I am using XOTcl 1.6.3, on 64bit Linux platform, with ActiveState
>>> 8.6.b2 distribution. The distribution itself is 32bit. I also tried
>>> and have the same problem with 32bit ActiveState 8.5.7 version.
>>>
>>> The simplest way to reproduce the problem is to do the following:
>>>
>>> Class X;
>>>
>>> set parameter_list {parameter1 parameter2 .... parameter100}; ### 100
>>> or so values
>>>
>>> X instproc init args {
>>> my requireNamespace; ### I need that
>>> foreach p [set ::parameter_list] {
>>> my parametercmd $p;
>>> my $p {};
>>> };
>>> next;
>>> };
>>>
>>> #then run the following
>>>
>>> time {X x; x destroy} 1000000
>>>
>>>
>>> ### the above line eats up a lot of memory and it is not being
>>> released during destruction of an instance.
>>>
>>>
>>> Thanks.
>>> _______________________________________________
>>> Xotcl mailing list
>>> Xotcl_at_alice.wu-wien.ac.at
>>> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>>>
>>>
>>>
>> _______________________________________________
>> Xotcl mailing list
>> Xotcl_at_alice.wu-wien.ac.at
>> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>>
>>
>
> _______________________________________________
> Xotcl mailing list
> Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>