#715: Parents probably not reclaimed due to too much caching
--------------------------------------------------+-------------------------
Reporter: robertwb | Owner: somebody
Type: defect | Status:
needs_review
Priority: major | Milestone: sage-5.0
Component: coercion | Resolution:
Keywords: weak cache coercion Cernay2012 | Work issues:
Report Upstream: N/A | Reviewers: Jean-Pierre
Flori
Authors: Simon King | Merged in:
Dependencies: #9138, #11900, #11599, #11521 | Stopgaps:
--------------------------------------------------+-------------------------
Changes (by jpflori):
* status: needs_work => needs_review
Old description:
> Here is a small example illustrating the issue.
>
> The memory footprint of the following piece of code grows indefinitely.
>
> {{{
> sage: K = GF(1<<55,'t')
> sage: a = K.random_element()
> sage: while 1:
> ....: E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;
>
> }}}
> E and P get deleted, but when 2*P is computed, the action of integers on
> A, the abelian group of rational points of the ellitpic curve, gets
> cached in the corecion model.
>
> A key-value pair is left in coercion_model._action_maps dict:
>
> (ZZ,A,*) : IntegerMulAction
>
> Moreover there is at least also references to A in the IntegerMulAction
> and one in ZZ._action_hash.
>
> So weak refs should be used in all these places if it does not slow
> things too much.
>
> '''To be merged with #11521'''. Apply:
>
> * [attachment:trac715_one_triple_dict.patch]
> * [attachment:trac_715-reviewer.patch]
> * [attachment:trac_715-rebase_11599.patch]
> * [attachment:trac_715-modulo.patch]
>
> and '''then''' the tickets from #11521.
New description:
Here is a small example illustrating the issue.
The memory footprint of the following piece of code grows indefinitely.
{{{
sage: K = GF(1<<55,'t')
sage: a = K.random_element()
sage: while 1:
....: E = EllipticCurve(j=a); P = E.random_point(); 2*P; del E, P;
}}}
E and P get deleted, but when 2*P is computed, the action of integers on
A, the abelian group of rational points of the ellitpic curve, gets cached
in the corecion model.
A key-value pair is left in coercion_model._action_maps dict:
(ZZ,A,*) : IntegerMulAction
Moreover there is at least also references to A in the IntegerMulAction
and one in ZZ._action_hash.
So weak refs should be used in all these places if it does not slow things
too much.
'''To be merged with #11521'''. Apply:
* [attachment:trac_715-one_triple_dict-take2.patch]
* [attachment:trac_715-reviewer-take2.patch]
* [attachment:trac_715-rebase_11599-take2.patch]
* [attachment:trac_715-size_t-take2.patch]
and '''then''' the tickets from #11521.
--
Comment:
The current patches seem ok both on my 64 bits system and on the virtual
32 bits system running within it.
At least Sage does start and computes correctly 1+1.
I'm currently running "make ptest" on both system.
On the latter, this will take an awfully long time.
I've also taken the liberty to modify the "reviewer" patch to fix
formatting issues (and rebase patches of #12313 on top of that).
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/715#comment:180>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.