GNU bug report logs - #79328
expr: memory not freed before program exit(memory leak)

Previous Next

Package: coreutils;

Reported by: yubiao hu <huyubiaox <at> gmail.com>

Date: Thu, 28 Aug 2025 07:24:02 UTC

Severity: normal

Tags: notabug, patch

Merged with 79331

Found in version 9.4

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Full log


Message #8 received at 79328 <at> debbugs.gnu.org (full text, mbox):

From: Collin Funk <collin.funk1 <at> gmail.com>
To: yubiao hu <huyubiaox <at> gmail.com>
Cc: 79328 <at> debbugs.gnu.org
Subject: Re: bug#79328: expr: memory not freed before program exit(memory leak)
Date: Thu, 28 Aug 2025 01:08:35 -0700
Hi,

yubiao hu <huyubiaox <at> gmail.com> writes:

> Package: coreutils
> Version: 9.4
> Severity: normal
>
> I was trying to build coreutils with ASan, and found a memory leak in expr.
>
> When running:
>  expr length "hello"
>
> Output:
> =================================================================
> ==755058==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 24 byte(s) in 1 object(s) allocated from:
>     #0 0xffff7f7a2524 in __interceptor_malloc
> ../../../../libsanitizer/asan/asan_malloc_linux.cpp:69
>     #1 0xaaaacd31f4c8 in xmalloc ../lib/xmalloc.c:45
>     #2 0xaaaacd2a0dd4 in int_value ../src/expr.c:369
>     #3 0xaaaacd2a0dd4 in eval6 ../src/expr.c:714
>     #4 0xaaaacd2a0dd4 in eval6 ../src/expr.c:694
>     #5 0xaaaacd2a4f44 in eval5 ../src/expr.c:786
>     #6 0xaaaacd2a5320 in eval4 ../src/expr.c:817
>     #7 0xaaaacd2a595c in eval3 ../src/expr.c:856
>     #8 0xaaaacd2a5dbc in eval2 ../src/expr.c:886
>     #9 0xaaaacd2a72e0 in eval1 ../src/expr.c:965
>     #10 0xaaaacd2a7874 in eval ../src/expr.c:996
>     #11 0xaaaacd29d3e0 in main ../src/expr.c:352

I recommend running the following in your shell before testing with
address sanitizer:

    $ export ASAN_OPTIONS="detect_leaks=0

Most (all?) of the programs in Coreutils will not free memory before
exit, since it just takes extra time for no benefit.

Also, I expect most other GNU programs to behave this way. Since it is
the behavior recommended in the GNU Coding Standards [1].

Thanks,
Collin

[1] https://www.gnu.org/prep/standards/standards.html#Memory-Usage




This bug report was last modified 12 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.