Hello all,

I am going through the results for a valgrind run I did on the full
(long) test suite for Sage-4.1. Here are the top ten "definitely lost"
doctests, along with some explanation when I was able. As I have
organized the leaks, I see five new trac tickets that need to be made
blockers for sage-4.2, whenever that is eventually released.  The
eleventh leakiest doctest leaked 3.11% as much as the maximum, so "top
ten" is somewhat justified. I have not made any new tickets yet, as I
am hoping the experts in each area will do once the leaks are better
understood. I still have my build ready to test, so that I can test
patches to these problems.

-- 
Robert L. Miller
http://www.rlmiller.org/

#1.
graphs/graph_generators.py
definitely lost: 758,387 bytes in 93,708 blocks.
This is due mostly to the leak fixed by trac # 6537.
With this fixed, there are 10,467 bytes of leakage left, which brings
its significance out of this list, and all remaining leaks are due to
"Leak A" below, which is part of every Sage run and test.

#2.
combinat/sf/jack.py
definitely lost: 393,139 bytes in 6,962 blocks.
Aside from background noise, these all involve Sage's Cython wrapper
for Symmetrica.
See "Leak B1" below-- all the leaks in this doctest look very similar.

#3.
modular/quatalg/brandt.py
definitely lost: 382,011 bytes in 47,656 blocks.
It looks like something in quaternion algebras is not clearing mpz's.
See "Leak C" below -- all the leaks here involve the QuaternionAlgebra
stuff, not all of them involve the misc_c_iterator_prod.

#4.
either: matrix/benchmark.py
or misc/benchmark.py
or tests/benchmark.py
(The valgrind reports only indicate filename, and I haven't figured it
out. The other benchmark.py's all leak at baseline.)
definitely lost: 213,819 bytes in 7,618 blocks.
This involves GiNaC at some point -- see "Leak D" for an example.

#5.
graphs/trees.pyx
definitely lost: 152,915 bytes in 19,004 blocks.
This is the same leak as #1 - already fixed!

#6.
combinat/sf/orthotriang.py
definitely lost: 76,371 bytes in 1,667 blocks.
Leak B1.

#7.
combinat/sf/sfa.py
definitely lost: 70,237 bytes in 4,182 blocks.
This is another Symmetrica related issue, but the leaks look
different: see "Leak B2" below.
Note that POWSYM_SCHUR and SCHUR_POWSYM both show up in the valgrind reports...

#8.
symbolic/expression.pyx
definitely lost: 66,403 bytes in 1,642 blocks.
Instances of Leak D. Also, see "Leak E1, E2 and E3", which seem related.

#9.
schemes/elliptic_curves/ell_modular_symbols.py
definitely lost: 36,499 bytes in 384 blocks.
There are a bunch of different leaks here, so I'm just posting a link
to the logs for this one:
http://sage.math.washington.edu/home/rlmill/ell_modular_symbols.vg.txt

#10.
algebras/quaternion_algebra.py
definitely lost: 28,659 bytes in 3,462 blocks.
This is all Leak C.


Leak A: ModuleElement add leaks Integers?
==16917== 1,432 (960 direct, 472 indirect) bytes in 20 blocks are
definitely lost in loss record 16,126 of 17,766
==16917==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==16917==    by 0x12EA8523: __pyx_f_4sage_5rings_7integer_fast_tp_new
(integer.c:28971)
==16917==    by 0x12E726A0:
__pyx_f_4sage_5rings_7integer_7Integer__add_ (integer.c:9803)
==16917==    by 0xF2181AF:
__pyx_pf_4sage_9structure_7element_13ModuleElement___add__
(element.c:6628)
==16917==    by 0x41A24C: binary_op1 (abstract.c:917)
==16917==    by 0x41A70F: PyNumber_Add (abstract.c:1157)
==16917==    by 0x725585D: op_add (operator.c:71)
==16917==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==16917==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==16917==    by 0xF487858:
__pyx_f_4sage_9structure_6coerce_24CoercionModel_cache_maps_bin_op
(coerce.c:6105)
==16917==    by 0xF218266:
__pyx_pf_4sage_9structure_7element_13ModuleElement___add__
(element.c:6647)
==16917==    by 0x41A24C: binary_op1 (abstract.c:917)
==16917==    by 0x41A70F: PyNumber_Add (abstract.c:1157)
==16917==    by 0x491945: PyEval_EvalFrameEx (ceval.c:1189)
==16917==    by 0x4969E3: PyEval_EvalFrameEx (ceval.c:3792)
==16917==    by 0x4969E3: PyEval_EvalFrameEx (ceval.c:3792)
==16917==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==16917==    by 0x49643D: PyEval_EvalFrameEx (ceval.c:522)
==16917==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==16917==    by 0x4EE37C: function_call (funcobject.c:524)
==16917==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==16917==    by 0x42156E: instancemethod_call (classobject.c:2579)
==16917==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==16917==    by 0x493511: PyEval_EvalFrameEx (ceval.c:3917)
==16917==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)



Leak B: Symmetrica
Leak B1: Symmetrica w/ MONOMIAL_POWSYM
==4250== 200,368 bytes in 1,967 blocks are definitely lost in loss
record 15,879 of 15,912
==4250==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==4250==    by 0x18F012AA: SYM_malloc (de.c:49)
==4250==    by 0x19552BDB: m_il_integervector (vc.c:281)
==4250==    by 0x1919BC38: copy_partition (part.c:2381)
==4250==    by 0x1923A818: copy_monom (poly.c:471)
==4250==    by 0x18F5FD9E: add_apply_hashtable (hash.c:183)
==4250==    by 0x18FF171A: verf2 (mmm.c:426)
==4250==    by 0x18FF2BA1: mmm_partition_partition_ (mmm.c:230)
==4250==    by 0x194C3D12: monomial_recursion2 (tmh.c:340)
==4250==    by 0x194D6BCD: tmp_monomial__faktor (tmp.c:194)
==4250==    by 0x194DCADC: tmp___faktor (tmp.c:220)
==4250==    by 0x194DD979: t_MONOMIAL_POWSYM (tmp.c:242)
==4250==    by 0x18E97CBC:
__pyx_pf_4sage_4libs_10symmetrica_10symmetrica_t_MONOMIAL_POWSYM_symmetrica
(symmetrica.c:18270)
==4250==    by 0x496536: PyEval_EvalFrameEx (ceval.c:3694)
==4250==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==4250==    by 0x4EE37C: function_call (funcobject.c:524)
==4250==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4250==    by 0x42156E: instancemethod_call (classobject.c:2579)
==4250==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4250==    by 0x466275: slot_tp_call (typeobject.c:5372)
==4250==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4250==    by 0x493511: PyEval_EvalFrameEx (ceval.c:3917)
==4250==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==4250==    by 0x494E31: PyEval_EvalFrameEx (ceval.c:3802)
==4250==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)



Leak B2: Symmetrica w/ POWSYM_SCHUR/SCHUR_POWSYM
==4245== 3,312 bytes in 207 blocks are definitely lost in loss record
15,726 of 16,479
==4245==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==4245==    by 0x18F012AA: SYM_malloc (de.c:49)
==4245==    by 0x19267F89: callocobject_fast (rest.c:3507)
==4245==    by 0x19551768: m_il_integervector (vc.c:275)
==4245==    by 0x1919BC38: copy_partition (part.c:2381)
==4245==    by 0x1923A818: copy_monom (poly.c:471)
==4245==    by 0x18F5FD9E: add_apply_hashtable (hash.c:183)
==4245==    by 0x19784478: mps_integer_partition_ (mps.c:278)
==4245==    by 0x1978A491: mps_integer__ (in
/space/rlm/sage-4.1.vg/devel/sage-main/build/sage/libs/symmetrica/symmetrica.so)
==4245==    by 0x1978AF68: mps_partition__ (mps.c:100)
==4245==    by 0x197A7C6D: mps_powsym__ (in
/space/rlm/sage-4.1.vg/devel/sage-main/build/sage/libs/symmetrica/symmetrica.so)
==4245==    by 0x197A7E2B: mps___ (mps.c:155)
==4245==    by 0x197A7F16: mult_powsym_schur (mps.c:188)
==4245==    by 0x19504A09: t_POWSYM_SCHUR (tps.c:32)
==4245==    by 0x18E99B98:
__pyx_pf_4sage_4libs_10symmetrica_10symmetrica_t_POWSYM_SCHUR_symmetrica
(symmetrica.c:19786)
==4245==    by 0x496536: PyEval_EvalFrameEx (ceval.c:3694)
==4245==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==4245==    by 0x4EE37C: function_call (funcobject.c:524)
==4245==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4245==    by 0x42156E: instancemethod_call (classobject.c:2579)
==4245==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4245==    by 0x466275: slot_tp_call (typeobject.c:5372)
==4245==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==4245==    by 0x493511: PyEval_EvalFrameEx (ceval.c:3917)
==4245==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)



Leak C: QuaternionAlgebraElement_rational_field
==32604== 24,928 bytes in 3,116 blocks are definitely lost in loss
record 17,954 of 18,158
==32604==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==32604==    by 0x90E5807: __gmpz_init (in
/space/rlm/sage-4.1.vg/local/lib/libgmp.so.3.4.4)
==32604==    by 0x270AE044:
__pyx_pf_4sage_8algebras_7quatalg_26quaternion_algebra_element_39QuaternionAlgebraElement_rational_field___cinit__(_object*,
_object*, _object*) (quaternion_algebra_element.cpp:8473)
==32604==    by 0x270AE110:
__pyx_tp_new_4sage_8algebras_7quatalg_26quaternion_algebra_element_QuaternionAlgebraElement_rational_field(_typeobject*,
_object*, _object*) (quaternion_algebra_element.cpp:15945)
==32604==    by 0x272DC19C:
__pyx_pf_4sage_8algebras_7quatalg_25quaternion_algebra_cython_rational_quaternions_from_integral_matrix_and_denom(_object*,
_object*, _object*) (quaternion_algebra_cython.cpp:2822)
==32604==    by 0x4967C2: PyEval_EvalFrameEx (ceval.c:3706)
==32604==    by 0x4969E3: PyEval_EvalFrameEx (ceval.c:3792)
==32604==    by 0x4969E3: PyEval_EvalFrameEx (ceval.c:3792)
==32604==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==32604==    by 0x494E31: PyEval_EvalFrameEx (ceval.c:3802)
==32604==    by 0x4EBFF8: gen_send_ex (genobject.c:84)
==32604==    by 0x419C2A: PyIter_Next (abstract.c:3076)
==32604==    by 0xA9A4596: __pyx_f_4sage_4misc_6misc_c_iterator_prod
(misc_c.c:1928)
==32604==    by 0xA9A2DD2: __pyx_pf_4sage_4misc_6misc_c_prod (misc_c.c:1414)
==32604==    by 0x4967C2: PyEval_EvalFrameEx (ceval.c:3706)
==32604==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==32604==    by 0x49643D: PyEval_EvalFrameEx (ceval.c:522)
==32604==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==32604==    by 0x4EE37C: function_call (funcobject.c:524)
==32604==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==32604==    by 0x42156E: instancemethod_call (classobject.c:2579)
==32604==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==32604==    by 0x493511: PyEval_EvalFrameEx (ceval.c:3917)
==32604==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==32604==    by 0x494E31: PyEval_EvalFrameEx (ceval.c:3802)



Leak D: GiNaC using Integers
==24412== 115,544 bytes in 4,951 blocks are definitely lost in loss
record 15,834 of 15,878
==24412==    at 0x4C230C2: realloc (vg_replace_malloc.c:429)
==24412==    by 0x8CB3B6E: __pyx_f_4sage_5rings_6memory_pymem_realloc
(memory.c:1916)
==24412==    by 0x90EB4EC: __gmpz_realloc (in
/space/rlm/sage-4.1.vg/local/lib/libgmp.so.3.4.4)
==24412==    by 0x90E84B5: __gmpz_mul (in
/space/rlm/sage-4.1.vg/local/lib/libgmp.so.3.4.4)
==24412==    by 0x12E74D5C:
__pyx_f_4sage_5rings_7integer_7Integer__mul_ (integer.c:10626)
==24412==    by 0xF22107B:
__pyx_pf_4sage_9structure_7element_11RingElement___mul__
(element.c:9915)
==24412==    by 0x41A24C: binary_op1 (abstract.c:917)
==24412==    by 0x41C8C7: PyNumber_Multiply (abstract.c:1188)
==24412==    by 0x2646CB43:
GiNaC::Number_T::operator*(GiNaC::Number_T) const (numeric.cpp:615)
==24412==    by 0x2646CD70: GiNaC::numeric::mul(GiNaC::numeric const&)
const (numeric.cpp:1824)
==24412==    by 0x26474026: GiNaC::operator*=(GiNaC::numeric&,
GiNaC::numeric const&) (operators.cpp:149)
==24412==    by 0x264839E9: GiNaC::power::expand_add(GiNaC::add
const&, int, unsigned) const (power.cpp:1058)
==24412==    by 0x26484A8E: GiNaC::power::expand(unsigned) const (power.cpp:975)
==24412==    by 0x2638385C: GiNaC::ex::expand(unsigned) const (ex.cpp:78)
==24412==    by 0x267A107E:
__pyx_pf_4sage_8symbolic_10expression_10Expression_expand(_object*,
_object*, _object*) (expression.cpp:12634)
==24412==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==24412==    by 0x4924B8: PyEval_EvalFrameEx (ceval.c:4005)
==24412==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==24412==    by 0x494E31: PyEval_EvalFrameEx (ceval.c:3802)
==24412==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==24412==    by 0x49643D: PyEval_EvalFrameEx (ceval.c:522)
==24412==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==24412==    by 0x4EE37C: function_call (funcobject.c:524)
==24412==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==24412==    by 0x42156E: instancemethod_call (classobject.c:2579)



Leak E: PyFortranObject
Leak E1: initflapack, PyFortranObject
==23915== 5,600 bytes in 140 blocks are definitely lost in loss record
20,695 of 21,464
==23915==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==23915==    by 0x44BBDB: _PyObject_New (object.c:238)
==23915==    by 0x3E34B60C: PyFortranObject_NewAsAttr (fortranobject.c:78)
==23915==    by 0x3E347A3C: initflapack (flapackmodule.c:26896)
==23915==    by 0x4B0362: _PyImport_LoadDynamicModule (importdl.c:53)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE450: ensure_fromlist (import.c:2501)
==23915==    by 0x4AEB75: PyImport_ImportModuleLevel (import.c:2169)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)
==23915==    by 0x4ACA8F: PyImport_ExecCodeModuleEx (import.c:680)
==23915==    by 0x4ADADF: load_source_module (import.c:1016)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE65A: load_next (import.c:2410)
==23915==    by 0x4AEA58: PyImport_ImportModuleLevel (import.c:2132)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)



Leak E2: initfblas, PyFortranObject
==23915== 2,800 bytes in 70 blocks are definitely lost in loss record
20,008 of 21,464
==23915==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==23915==    by 0x44BBDB: _PyObject_New (object.c:238)
==23915==    by 0x3E9CF4FC: PyFortranObject_NewAsAttr (fortranobject.c:78)
==23915==    by 0x3E9C4ABC: initfblas (fblasmodule.c:11883)
==23915==    by 0x4B0362: _PyImport_LoadDynamicModule (importdl.c:53)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE450: ensure_fromlist (import.c:2501)
==23915==    by 0x4AEB75: PyImport_ImportModuleLevel (import.c:2169)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)
==23915==    by 0x4ACA8F: PyImport_ExecCodeModuleEx (import.c:680)
==23915==    by 0x4ADADF: load_source_module (import.c:1016)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE65A: load_next (import.c:2410)
==23915==    by 0x4AEA58: PyImport_ImportModuleLevel (import.c:2132)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)



Leak E3: initclapack, PyFortranObject
==23915== 1,600 bytes in 40 blocks are definitely lost in loss record
19,595 of 21,464
==23915==    at 0x4C22FEB: malloc (vg_replace_malloc.c:207)
==23915==    by 0x44BBDB: _PyObject_New (object.c:238)
==23915==    by 0x3E5926DC: PyFortranObject_NewAsAttr (fortranobject.c:78)
==23915==    by 0x3E590C48: initclapack (clapackmodule.c:5932)
==23915==    by 0x4B0362: _PyImport_LoadDynamicModule (importdl.c:53)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE450: ensure_fromlist (import.c:2501)
==23915==    by 0x4AEB75: PyImport_ImportModuleLevel (import.c:2169)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)
==23915==    by 0x4ACA8F: PyImport_ExecCodeModuleEx (import.c:680)
==23915==    by 0x4ADADF: load_source_module (import.c:1016)
==23915==    by 0x4AE198: import_submodule (import.c:2590)
==23915==    by 0x4AE65A: load_next (import.c:2410)
==23915==    by 0x4AEA58: PyImport_ImportModuleLevel (import.c:2132)
==23915==    by 0x48F148: builtin___import__ (bltinmodule.c:48)
==23915==    by 0x419F7C: PyObject_Call (abstract.c:2492)
==23915==    by 0x48F6E5: PyEval_CallObjectWithKeywords (ceval.c:3575)
==23915==    by 0x4933B6: PyEval_EvalFrameEx (ceval.c:2136)
==23915==    by 0x497930: PyEval_EvalCodeEx (ceval.c:2968)
==23915==    by 0x497A11: PyEval_EvalCode (ceval.c:522)

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to