Hello folks, Okay, Sage's Bug Day is over. Many tickets were fixed, but I am not writing a genral summary, but will concentrate on the memleak situation: We made much progress, we in this case being burcin, malb, robertwb, wstein and mabshoff. I am hoping that I did not leave anybody working on the memleak issue out, please let me know because I didn't reread the log, it is much too long.
So the great news first: Sage 2.8.3.6 post Bug Day 2 + malb's fix for #566: Sage startup + quit ==983== definitely lost: 2,516 bytes in 3 blocks. ==983== possibly lost: 277,846 bytes in 777 blocks. ==983== still reachable: 136,165,614 bytes in 16,977 blocks. ==983== suppressed: 0 bytes in 0 blocks. The Log is now about 1.6MB instead of 2.3 MB before BG2. Prior to any of the memleak fixes the log was 5.6MB. The 3 issues left over are already in trac, one leak of 2500 bytes is obvious to fix. The next one was the main target and caused many of the open tickets: "for n in range(10,100): a=ModularSymbols(n,sign=1).decomposition(); print n, get_memory_usage()" 2.8.3rc3 or so: ==5107== LEAK SUMMARY: ==5107== definitely lost: 14,051,359 bytes in 1,679,059 blocks. ==5107== indirectly lost: 470,430 bytes in 12,425 blocks. ==5107== possibly lost: 396,558 bytes in 1,064 blocks. ==5107== still reachable: 168,316,769 bytes in 635,979 blocks. ==5107== suppressed: 0 bytes in 0 blocks. Sage 2.8.3.6 post Bug Day 2 + malb's fix for #566: ==865== LEAK SUMMARY: ==865== definitely lost: 1,496,373 bytes in 113,793 blocks. ==865== indirectly lost: 433,873 bytes in 8,106 blocks. ==865== possibly lost: 402,206 bytes in 1,052 blocks. ==865== still reachable: 168,114,457 bytes in 629,817 blocks. ==865== suppressed: 0 bytes in 0 blocks. So there is a 10 fold reduction in "definitely lost" and improvement "still reachable". The slight increase is noise from python and also valgrind's accounting can be a little fuzzy. I also revisited #454: for i in range(3): get_memory_usage() m = ModularSymbols(501,2).decomposition(3) del m ModularSymbols_clear_cache() get_memory_usage() ==8920== LEAK SUMMARY: ==8920== definitely lost: 1,518,830 bytes in 183,739 blocks. ==8920== indirectly lost: 288,408 bytes in 610 blocks. ==8920== possibly lost: 489,439 bytes in 1,002 blocks. ==8920== still reachable: 160,311,066 bytes in 872,845 blocks. ==8920== suppressed: 0 bytes in 0 blocks. #562 & #563 are still big problems, but those two account for the vast majority of "definitely lost" New tickets: Those are of the "still reachable" nature, i.e. reference counts might play a role here. robertwb has written some code to help trac those issues (see #611) and we need to do a little bit more research before we will tackle those problems. But as you can see by the size they are definitely worth fixing: #620: ==8920== 1,612,736 bytes in 446 blocks are still reachable in loss record 2,367 of 2,372 ==8920== at 0x4A05A66: malloc (vg_replace_malloc.c:207) ==8920== by 0x210A2D65: __pyx_f_21vector_rational_dense_21Vector_rational_dense__init (vector_rational_dense.c:770) ==8920== by 0x210A0DE7: __pyx_tp_new_21vector_rational_dense_Vector_rational_dense (vector_rational_dense.c:865) ==8920== by 0x45A272: type_call (typeobject.c:422) ==8920== by 0x4156A2: PyObject_Call (abstract.c:1860) ==8920== by 0x480783: PyEval_EvalFrameEx (ceval.c:3775) ==8920== by 0x4865EF: PyEval_EvalCodeEx (ceval.c:2831) ==8920== by 0x4CFED0: function_call (funcobject.c:517) ==8920== by 0x4156A2: PyObject_Call (abstract.c:1860) ==8920== by 0x41BE0C: instancemethod_call (classobject.c:2497) ==8920== by 0x4156A2: PyObject_Call (abstract.c:1860) ==8920== by 0x480783: PyEval_EvalFrameEx (ceval.c:3775) #621: ==8920== 2,603,712 bytes in 5 blocks are still reachable in loss record 2,370 of 2,372 ==8920== at 0x4A05A66: malloc (vg_replace_malloc.c:207) ==8920== by 0x205E1766: __pyx_f_20matrix_integer_dense_20Matrix_integer_dense___new__ (matrix_integer_dense.c:2966) ==8920== by 0x205E1BE0: __pyx_tp_new_20matrix_integer_dense_Matrix_integer_dense (matrix_integer_dense.c:17692) ==8920== by 0x45A272: type_call (typeobject.c:422) ==8920== by 0x4156A2: PyObject_Call (abstract.c:1860) ==8920== by 0x480783: PyEval_EvalFrameEx (ceval.c:3775) ==8920== by 0x4865EF: PyEval_EvalCodeEx (ceval.c:2831) ==8920== by 0x4845B3: PyEval_EvalFrameEx (ceval.c:3660) ==8920== by 0x4865EF: PyEval_EvalCodeEx (ceval.c:2831) ==8920== by 0x4CFF37: function_call (funcobject.c:517) ==8920== by 0x4156A2: PyObject_Call (abstract.c:1860) ==8920== by 0x41BE0C: instancemethod_call (classobject.c:2497) Cheers, Michael --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---