#715: Parents probably not reclaimed due to too much caching
--------------------------------------------------------------------+-------
       Reporter:  robertwb                                          |         
Owner:  somebody                                 
           Type:  defect                                            |        
Status:  closed                                   
       Priority:  major                                             |     
Milestone:  sage-5.5                                 
      Component:  coercion                                          |    
Resolution:  fixed                                    
       Keywords:  weak cache coercion Cernay2012                    |   Work 
issues:                                           
Report Upstream:  N/A                                               |     
Reviewers:  Jean-Pierre Flori, Simon King, Nils Bruin
        Authors:  Simon King, Jean-Pierre Flori                     |     
Merged in:  sage-5.5.beta0                           
   Dependencies:  #13145, #13741, #13746, to be merged with #11521  |      
Stopgaps:                                           
--------------------------------------------------------------------+-------

Comment (by jpflori):

 Building Python without pymalloc, I hopefully got valgrind outputs which
 might point to the hopefully last problem we have to face:

 Not sure we got these so clearly before, but using --without-pymalloc and
 Valgrind (hint: finish and review #13060) I get lots of
 {{{
 ==28631== Invalid read of size 8
 ==28631==    at 0x10429E50:
 __pyx_tp_dealloc_4sage_9structure_15category_object_CategoryObject
 (category_object.c:8990)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4EBA106: insertdict (dictobject.c:530)
 ==28631==    by 0x4EBCB51: PyDict_SetItem (dictobject.c:775)
 ==28631==    by 0x4EC2517: _PyObject_GenericSetAttrWithDict
 (object.c:1524)
 ==28631==    by 0x4EC1F5E: PyObject_SetAttr (object.c:1247)
 ==28631==    by 0x4F21600: PyEval_EvalFrameEx (ceval.c:2004)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F1F6A6: PyEval_CallObjectWithKeywords (ceval.c:3890)
 ==28631==    by 0x4F23D5A: PyEval_EvalFrameEx (ceval.c:1739)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F266C1: PyEval_EvalCode (ceval.c:667)
 ==28631==    by 0x4F24388: PyEval_EvalFrameEx (ceval.c:4718)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4E8C46F: instancemethod_call (classobject.c:2578)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F21828: PyEval_EvalFrameEx (ceval.c:4239)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F2422C: PyEval_EvalFrameEx (ceval.c:4117)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==  Address 0xbd30390 is 48 bytes inside a block of size 256 free'd
 ==28631==    at 0x4C28B16: free (vg_replace_malloc.c:446)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4F5F112: collect (gcmodule.c:770)
 ==28631==    by 0x4F5FB06: _PyObject_GC_Malloc (gcmodule.c:996)
 ==28631==    by 0x4F5FB3C: _PyObject_GC_New (gcmodule.c:1467)
 ==28631==    by 0x4E98B97: PyWrapper_New (descrobject.c:1068)
 ==28631==    by 0x4EC2258: _PyObject_GenericGetAttrWithDict
 (object.c:1434)
 ==28631==    by 0x10A6CD28:
 __pyx_pw_4sage_9structure_11coerce_dict_16TripleDictEraser_3__call__
 (coerce_dict.c:1225)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4E7EB2D: PyObject_CallFunctionObjArgs (abstract.c:2760)
 ==28631==    by 0x4EEA350: PyObject_ClearWeakRefs (weakrefobject.c:881)
 ==28631==    by 0x10429E4F:
 __pyx_tp_dealloc_4sage_9structure_15category_object_CategoryObject
 (category_object.c:8989)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4EBA106: insertdict (dictobject.c:530)
 ==28631==    by 0x4EBCB51: PyDict_SetItem (dictobject.c:775)
 ==28631==    by 0x4EC2517: _PyObject_GenericSetAttrWithDict
 (object.c:1524)
 ==28631==    by 0x4EC1F5E: PyObject_SetAttr (object.c:1247)
 ==28631==    by 0x4F21600: PyEval_EvalFrameEx (ceval.c:2004)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F1F6A6: PyEval_CallObjectWithKeywords (ceval.c:3890)
 ==28631==    by 0x4F23D5A: PyEval_EvalFrameEx (ceval.c:1739)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F266C1: PyEval_EvalCode (ceval.c:667)
 }}}
 and
 {{{
 ==28631== Invalid read of size 8
 ==28631==    at 0x4F5FC1E: PyObject_GC_Del (gcmodule.c:210)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4EBA106: insertdict (dictobject.c:530)
 ==28631==    by 0x4EBCB51: PyDict_SetItem (dictobject.c:775)
 ==28631==    by 0x4EC2517: _PyObject_GenericSetAttrWithDict
 (object.c:1524)
 ==28631==    by 0x4EC1F5E: PyObject_SetAttr (object.c:1247)
 ==28631==    by 0x4F21600: PyEval_EvalFrameEx (ceval.c:2004)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F1F6A6: PyEval_CallObjectWithKeywords (ceval.c:3890)
 ==28631==    by 0x4F23D5A: PyEval_EvalFrameEx (ceval.c:1739)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F266C1: PyEval_EvalCode (ceval.c:667)
 ==28631==    by 0x4F24388: PyEval_EvalFrameEx (ceval.c:4718)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4E8C46F: instancemethod_call (classobject.c:2578)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F21828: PyEval_EvalFrameEx (ceval.c:4239)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F2422C: PyEval_EvalFrameEx (ceval.c:4117)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==  Address 0xbd30360 is 0 bytes inside a block of size 256 free'd
 ==28631==    at 0x4C28B16: free (vg_replace_malloc.c:446)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4F5F112: collect (gcmodule.c:770)
 ==28631==    by 0x4F5FB06: _PyObject_GC_Malloc (gcmodule.c:996)
 ==28631==    by 0x4F5FB3C: _PyObject_GC_New (gcmodule.c:1467)
 ==28631==    by 0x4E98B97: PyWrapper_New (descrobject.c:1068)
 ==28631==    by 0x4EC2258: _PyObject_GenericGetAttrWithDict
 (object.c:1434)
 ==28631==    by 0x10A6CD28:
 __pyx_pw_4sage_9structure_11coerce_dict_16TripleDictEraser_3__call__
 (coerce_dict.c:1225)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4E7EB2D: PyObject_CallFunctionObjArgs (abstract.c:2760)
 ==28631==    by 0x4EEA350: PyObject_ClearWeakRefs (weakrefobject.c:881)
 ==28631==    by 0x10429E4F:
 __pyx_tp_dealloc_4sage_9structure_15category_object_CategoryObject
 (category_object.c:8989)
 ==28631==    by 0x4ED96C5: subtype_dealloc (typeobject.c:1014)
 ==28631==    by 0x4EBA106: insertdict (dictobject.c:530)
 ==28631==    by 0x4EBCB51: PyDict_SetItem (dictobject.c:775)
 ==28631==    by 0x4EC2517: _PyObject_GenericSetAttrWithDict
 (object.c:1524)
 ==28631==    by 0x4EC1F5E: PyObject_SetAttr (object.c:1247)
 ==28631==    by 0x4F21600: PyEval_EvalFrameEx (ceval.c:2004)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4EA8F65: function_call (funcobject.c:526)
 ==28631==    by 0x4E7DFED: PyObject_Call (abstract.c:2529)
 ==28631==    by 0x4F1F6A6: PyEval_CallObjectWithKeywords (ceval.c:3890)
 ==28631==    by 0x4F23D5A: PyEval_EvalFrameEx (ceval.c:1739)
 ==28631==    by 0x4F26587: PyEval_EvalCodeEx (ceval.c:3253)
 ==28631==    by 0x4F266C1: PyEval_EvalCode (ceval.c:667)
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/715#comment:347>
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.

Reply via email to