Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory leaks #112

Closed
hkiel opened this issue Oct 13, 2022 · 1 comment
Closed

Memory leaks #112

hkiel opened this issue Oct 13, 2022 · 1 comment

Comments

@hkiel
Copy link
Contributor

hkiel commented Oct 13, 2022

I instrumented abcm2ps with memory allocation tracking module and found a few 'leaks' when running ./abcm2ps sample.abc

DEBUG 65 remaining items in Memory List.
DEBUG Remaining items in Memory List:
DEBUG 1: 16414 bytes allocated in abcm2ps.c:1113 ("")
DEBUG 2: 16414 bytes allocated in abcm2ps.c:1113 ("")
DEBUG 3: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 4: 16414 bytes allocated in abcm2ps.c:1113 ("(J")
DEBUG 5: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 6: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 7: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 8: 16414 bytes allocated in abcm2ps.c:1113 ("(B")
DEBUG 9: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 10: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 11: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 12: 16414 bytes allocated in abcm2ps.c:1113 ("(:")
DEBUG 13: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 14: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 15: 16414 bytes allocated in abcm2ps.c:1113 ("(|")
DEBUG 16: 16414 bytes allocated in abcm2ps.c:1113 ("(t")
DEBUG 17: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 18: 16414 bytes allocated in abcm2ps.c:1113 ("(2")
DEBUG 19: 16414 bytes allocated in abcm2ps.c:1113 ("(l")
DEBUG 20: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 21: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 22: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 23: 16414 bytes allocated in abcm2ps.c:1113 ("(d")
DEBUG 24: 16414 bytes allocated in abcm2ps.c:1113 ("(*")
DEBUG 25: 16414 bytes allocated in abcm2ps.c:1113 ("("")
DEBUG 26: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 27: 16414 bytes allocated in abcm2ps.c:1113 ("(\")
DEBUG 28: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 29: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 30: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 31: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 32: 16414 bytes allocated in abcm2ps.c:1113 ("(X")
DEBUG 33: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 34: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 35: 16414 bytes allocated in abcm2ps.c:1113 ("(P")
DEBUG 36: 4 bytes allocated in deco.c:927 ("hld")
DEBUG 37: 4 bytes allocated in deco.c:927 ("cpu")
DEBUG 38: 4 bytes allocated in deco.c:927 ("grm")
DEBUG 39: 4 bytes allocated in deco.c:927 ("dnb")
DEBUG 40: 4 bytes allocated in deco.c:927 ("upb")
DEBUG 41: 4 bytes allocated in deco.c:927 ("sld")
DEBUG 42: 4 bytes allocated in deco.c:927 ("emb")
DEBUG 43: 4 bytes allocated in deco.c:927 ("stc")
DEBUG 44: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 45: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 46: 16414 bytes allocated in abcm2ps.c:1113 ("(H")
DEBUG 47: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 48: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 49: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 50: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 51: 9 bytes allocated in glyph.c:255 ("ellipsis")
DEBUG 52: 512 bytes allocated in glyph.c:251 ("")
DEBUG 53: 16414 bytes allocated in abcm2ps.c:1113 ("(@")
DEBUG 54: 16414 bytes allocated in abcm2ps.c:1113 ("(")
DEBUG 55: 8192 bytes allocated in front.c:110 ("w:mem-ber ...")
DEBUG 56: 11 bytes allocated in abcm2ps.c:224 ("sample.abc...")
DEBUG 57: 11 bytes allocated in format.c:205 ("Times-Bold...")
DEBUG 58: 12 bytes allocated in format.c:205 ("Times-Roma...")
DEBUG 59: 13 bytes allocated in format.c:205 ("Times-Ital...")
DEBUG 60: 10 bytes allocated in format.c:205 ("Helvetica")
DEBUG 61: 16 bytes allocated in format.c:417 ("%b %e, %Y ...")
DEBUG 62: 16414 bytes allocated in abcm2ps.c:1071 ("")
DEBUG 63: 16414 bytes allocated in abcm2ps.c:1071 ("(")
DEBUG 64: 16414 bytes allocated in abcm2ps.c:1071 ("(,")
DEBUG 65: 65536 bytes allocated in buffer.c:775 ("0 -22.00 T...")
DEBUG Total number of unfreed items: 65

I guess there should be more places in the code when using other input files and/or parameter flags. This was just to test the infrastructure.
I could not find any memory violations yet (allocated memory is 'protected' by a 16 byte wall at both ends, which is checked at free() and end of program)

@moinejf
Copy link
Collaborator

moinejf commented Oct 13, 2022

abcm2ps is a command line program, not a daemon. It does not need to free the memory it used at exit time.

Yes, it allocates memory in the heap. The allocator (arena) has 3 pools (levels): global, tunes and generation. Memory is allocated as needed, and when either the generation or the tunes (ABC file) are done, the arenas are put in an internal pool of free memory.

Your test generates only one file, then the memory arenas allocated for scanning the tunes are internally freed. But the generation level contains only the memory used by the last generation.

So, every thing is normal.

@hkiel hkiel closed this as completed Oct 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants