torognes / vsearch

Versatile open-source tool for microbiome analysis
Other
662 stars 123 forks source link

--fastx_uniques: still reachable memory under certain conditions (minor issue) #567

Open frederic-mahe opened 3 months ago

frederic-mahe commented 3 months ago

When using vsearch with either fastq-output (--fastqout) or tabulated-output (--tabbedout), valgrind reports that there are 47,088 bytes in 17 blocks still in use at exit. Other dereplication command are not affected.

Code to reproduce the issue:

TMP=$(mktemp)
valgrind \
    --log-file="${TMP}" \
    --leak-check=full \
    --show-leak-kinds=all \
    vsearch \
    --fastx_uniques <(printf ">s1\nA\n>s2\nA\n") \
    --uc /dev/null \
    --tabbedout /dev/null \
    --fastqout /dev/null \
    --fastaout /dev/null 2> /dev/null
cat "${TMP}"
rm -f "${TMP}"
unset TMP
torognes commented 2 months ago

FASTQ and tabulated output is only available with fastq_uniques when the input is in FASTQ format (not FASTA). VSEARCH therefore terminates with a fatal error message in these cases (written to stderr). I do not think it is necessary to clean up memory in these cases.

With FASTQ input (e.g. "@s1\nA\n+\nI\n@s2\nA\n+\nI\n") all memory is freed as expected.