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

potential memory leaks #138

Open
domibel opened this issue Oct 2, 2014 · 1 comment
Open

potential memory leaks #138

domibel opened this issue Oct 2, 2014 · 1 comment

Comments

@domibel
Copy link

domibel commented Oct 2, 2014

Here are some potential memory leaks detected with Cppcheck 1.66

~/htslib$ cppcheck --version
Cppcheck 1.66

~/htslib$ cppcheck --force . | grep error
[bgzf.c:69]: (error) Memory leak: new_flags
[bgzf.c:161]: (error) Memory leak: fp
[bgzf.c:1035]: (error) Resource leak: idx
[bgzip.c:159]: (error) Memory leak: name
[cram/cram_codecs.c:1204]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
[cram/cram_codecs.c:1205]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
[cram/cram_codecs.c:1229]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
[cram/cram_codecs.c:1230]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
[cram/cram_codecs.c:1246]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
[cram/cram_codecs.c:1290]: (error) Memory leak: freqs
[cram/cram_codecs.c:1290]: (error) Memory leak: lens
[cram/cram_codecs.c:1232]: (error) Memory leak: c
[cram/sam_header.h:168]: (error) Memory leak: new_flags
[cram/sam_header.h:169]: (error) Memory leak: new_flags
[cram/cram_structs.h:63]: (error) Memory leak: new_flags
[cram/cram_structs.h:66]: (error) Memory leak: new_flags
[cram/cram_structs.h:82]: (error) Memory leak: new_flags
[cram/cram_structs.h:560]: (error) Memory leak: new_flags
[cram/cram_decode.c:137]: (error) Memory leak: hdr
[cram/cram_decode.c:373]: (error) Memory leak: m
[cram/cram_decode.c:1486]: (error) Memory leak: refs
[cram/cram_index.c:226]: (error) Common realloc mistake: 'idx_stack' nulled but not freed upon failure
[cram/cram_io.c:2820]: (error) Memory leak: header
[cram/cram_io.c:786]: (error) Memory leak: uncomp
[cram/cram_io.c:2884]: (error) Memory leak: pads
[cram/cram_io.c:3100]: (error) Memory leak: pads
[cram/cram_stats.c:163]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
[cram/cram_stats.c:164]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
[cram/cram_stats.c:188]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
[cram/cram_stats.c:189]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
[cram/mFILE.c:97]: (error) Common realloc mistake: 'data' nulled but not freed upon failure
[cram/pooled_alloc.c:168]: (error) Memory leak: items
[cram/thread_pool.c:286]: (error) Dereferencing 'q' after it is deallocated / released
[cram/thread_pool.c:633]: (error) Dereferencing 'p' after it is deallocated / released
[cram/zfio.c:179]: (error) Invalid number of character ({) when these macros are defined: 'HAVE_POPEN'.
[faidx.c:46]: (error) Memory leak: new_flags
[faidx.c:104]: (error) Common realloc mistake: 'name' nulled but not freed upon failure
[faidx.c:225]: (error) Memory leak: str
[hts.c:339]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:358]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:367]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:390]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:400]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:408]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:416]: (error) Common realloc mistake: 's' nulled but not freed upon failure
[hts.c:400]: (error) Memory leak: s
[hts.c:50]: (error) Memory leak: new_flags
[hts.c:473]: (error) Memory leak: new_flags
[knetfile.c:416]: (error) Memory leak: buf
[htslib/khash_str2int.h:30]: (error) Memory leak: new_flags
[sam.c:225]: (error) Common realloc mistake: 'data' nulled but not freed upon failure
[sam.c:1360]: (error) Memory leak: new_flags
[synced_bcf_reader.c:64]: (error) Common realloc mistake: 'out' nulled but not freed upon failure
[vcf.c:41]: (error) Memory leak: new_flags
[vcfutils.c:183]: (error) Memory leak: ac
jmarshall added a commit that referenced this issue Dec 12, 2014
Updated to attractivechaos/klib@7163c21
and its parents, in particular fixing new_flags memory leaks (cf #138).
@daviesrob
Copy link
Member

I've re-run cppcheck to see the state of play now. Results are below, along with my opinion on if the report is true or not:

true:  [bgzf.c:166]: (error) Memory leak: fp
true:  [bgzf.c:1038]: (error) Resource leak: idx
true:  [cram/cram_codecs.c:1210]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
true:  [cram/cram_codecs.c:1211]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
true:  [cram/cram_codecs.c:1235]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
true:  [cram/cram_codecs.c:1236]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
true:  [cram/cram_codecs.c:1252]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
false: [cram/cram_codecs.c:957]: (error) Memory leak: h
false: [cram/cram_codecs.c:1359]: (error) Memory leak: freqs
false: [cram/cram_codecs.c:1359]: (error) Memory leak: lens
false: [cram/cram_codecs.c:1216]: (error) Memory leak: c
false: [cram/cram_codecs.c:1630]: (error) Memory leak: c
false: [cram/cram_codecs.c:1897]: (error) Memory leak: t
true:  [cram/cram_codecs.c:1927]: (error) Memory leak: t
true:  [cram/cram_codecs.c:1296]: (error) Memory leak: freqs
true:  [cram/cram_codecs.c:1296]: (error) Memory leak: lens
true:  [cram/cram_codecs.c:1238]: (error) Memory leak: c
false: [cram/cram_decode.c:142]: (error) Memory leak: hdr
false: [cram/cram_decode.c:376]: (error) Memory leak: m
false: [cram/cram_decode.c:646]: (error) Memory leak: m
false: [cram/cram_decode.c:977]: (error) Memory leak: block_used
false: [cram/cram_decode.c:2663]: (error) Memory leak: refs
true:  [cram/cram_decode.c:2307]: (error) Memory leak: refs
true:  [cram/cram_index.c:287]: (error) Common realloc mistake: 'idx_stack' nulled but not freed upon failure
true:  [cram/cram_index.c:191]: (error) Resource leak: fp
false: [cram/cram_index.c:171]: (error) Memory leak: idx_stack
false: [cram/cram_io.c:352]: (error) Signed integer overflow for expression '(72057594037927936)-1'.
false: [cram/cram_io.c:428]: (error) Signed integer overflow for expression '(72057594037927936)-1'.
false: [cram/cram_io.c:509]: (error) Signed integer overflow for expression '(72057594037927936)-1'.
false: [cram/cram_io.c:599]: (error) Signed integer overflow for expression '(72057594037927936)-1'.
false: [cram/cram_io.c:945]: (error) Memory leak: b
false: [cram/cram_io.c:3622]: (error) Memory leak: def
false: [cram/cram_io.c:3947]: (error) Memory leak: pads
true:  [cram/cram_io.c:864]: (error) Common realloc mistake: 'out' nulled but not freed upon failure
true:  [cram/cram_io.c:889]: (error) Common realloc mistake: 'out' nulled but not freed upon failure
true:  [cram/cram_stats.c:161]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
true:  [cram/cram_stats.c:162]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
true:  [cram/cram_stats.c:186]: (error) Common realloc mistake: 'vals' nulled but not freed upon failure
true:  [cram/cram_stats.c:187]: (error) Common realloc mistake: 'freqs' nulled but not freed upon failure
true:  [cram/mFILE.c:98]: (error) Common realloc mistake: 'data' nulled but not freed upon failure
true:  [cram/pooled_alloc.c:186]: (error) Memory leak: items
true:  [cram/rANS_static.c:866]: (error) Resource leak: infp
true:  [cram/rANS_static.c:866]: (error) Resource leak: outfp
true:  [cram/sam_header.c:426]: (error) va_list 'args' was opened but not closed by va_end().
true:  [cram/sam_header.c:726]: (error) va_list 'ap' was opened but not closed by va_end().
true:  [cram/thread_pool.c:291]: (error) Dereferencing 'q' after it is deallocated / released (if DEBUG defined)
true:  [cram/thread_pool.c:733]: (error) Dereferencing 'p' after it is deallocated / released (if DEBUG defined)
true:  [cram/vlen.c:111]: (error) va_list 'args' was opened but not closed by va_end().
true:  [cram/zfio.c:177]: (error) Invalid number of character '{' when these macros are defined: 'HAVE_POPEN'.
true:  [faidx.c:327]: (error) Memory leak: fai
true:  [hts.c:979]: (error) Common realloc mistake: 's' nulled but not freed upon failure (via htslib/hts.h hts_expand())
true:  [hts.c:998]: (error) Common realloc mistake: 's' nulled but not freed upon failure (via htslib/hts.h hts_expand())
true:  [hts.c:1007]: (error) Common realloc mistake: 's' nulled but not freed upon failure
true:  [hts.c:1030]: (error) Common realloc mistake: 's' nulled but not freed upon failure
true:  [hts.c:1040]: (error) Common realloc mistake: 's' nulled but not freed upon failure
true:  [hts.c:1048]: (error) Common realloc mistake: 's' nulled but not freed upon failure
true:  [hts.c:1056]: (error) Common realloc mistake: 's' nulled but not freed upon failure
false: [hts.c:54]: (error) Memory leak: new_flags
false: [hts.c:512]: (error) Memory leak: o
false: [hts.c:1106]: (error) Memory leak: new_flags
false: [hts.c:1186]: (error) Memory leak: idx
false: [hts.c:1801]: (error) Memory leak: off
true:  [sam.c:300]: (error) Common realloc mistake: 'data' nulled but not freed upon failure
false: [sam.c:641]: (error) Memory leak: iter
false: [sam.c:1597]: (error) Memory leak: new_flags
true:  [synced_bcf_reader.c:89]: (error) Common realloc mistake: 'out' nulled but not freed upon failure
false?: [tabix.c:171]: (error) Possible null pointer dereference: regs
false?: [tabix.c:205]: (error) Possible null pointer dereference: regs
false?: [tabix.c:225]: (error) Possible null pointer dereference: regs
true:  [test/hfile.c:172]: (error) Memory leak: original (exiting, don't care)
true:  [test/hfile.c:172]: (error) Memory leak: text (exiting, don't care)
false?: [vcf.c:1421]: (error) Possible null pointer dereference: a
false?: [vcf.c:1425]: (error) Possible null pointer dereference: a
true:  [vcf.c:800]: (error) Memory leak: h
true:  [vcf.c:1285]: (error) Memory leak: h

It looks like there may be a few things still to fix here.

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