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 -~----------~----~----~----~------~----~------~--~---