[0/2] mmap: Avoid the sanitizer configure check failure

Message ID 20240409142435.1708867-1-hjl.tools@gmail.com
Headers
Series mmap: Avoid the sanitizer configure check failure |

Message

H.J. Lu April 9, 2024, 2:24 p.m. UTC
  When -fsanitize=address,undefined is used to build, the mmap configure
check failed with

=================================================================
==231796==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190

SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).

Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
the sanitizer configure check failure.

H.J. Lu (2):
  mmap: Avoid the sanitizer configure check failure
  mmap: Avoid the sanitizer configure check failure

 bfd/Makefile.in          |  2 +-
 bfd/aclocal.m4           |  1 +
 bfd/configure            |  5 +++++
 bfd/configure.ac         |  2 +-
 binutils/Makefile.in     |  2 +-
 binutils/aclocal.m4      |  1 +
 binutils/configure       |  5 +++++
 binutils/configure.ac    |  2 +-
 config/mmap.m4           | 12 ++++++++++++
 config/no-executables.m4 |  4 ++--
 ld/Makefile.in           |  2 +-
 ld/aclocal.m4            |  1 +
 ld/configure             |  5 +++++
 ld/configure.ac          |  2 +-
 libctf/Makefile.in       |  2 +-
 libctf/aclocal.m4        |  1 +
 libctf/configure         |  5 +++++
 libctf/configure.ac      |  2 +-
 libiberty/Makefile.in    |  1 +
 libiberty/acinclude.m4   |  2 +-
 libiberty/aclocal.m4     |  1 +
 libiberty/configure      |  5 +++++
 libsframe/Makefile.in    |  1 +
 libsframe/aclocal.m4     |  1 +
 libsframe/configure      |  5 +++++
 libsframe/configure.ac   |  2 +-
 zlib/Makefile.in         |  2 +-
 zlib/acinclude.m4        |  1 +
 zlib/configure           |  7 -------
 29 files changed, 64 insertions(+), 20 deletions(-)
  

Comments

Sam James April 9, 2024, 11:08 p.m. UTC | #1
"H.J. Lu" <hjl.tools@gmail.com> writes:

> When -fsanitize=address,undefined is used to build, the mmap configure
> check failed with

I think Paul fixed this in autoconf commit
09b6e78d1592ce10fdc975025d699ee41444aa3f, so we should add a comment
about that so we can clean this up in future.

>
> =================================================================
> ==231796==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 4096 byte(s) in 1 object(s) allocated from:
>     #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
>     #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239
>
> Direct leak of 4096 byte(s) in 1 object(s) allocated from:
>     #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
>     #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190
>
> SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).
>
> Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
> the sanitizer configure check failure.
>
> H.J. Lu (2):
>   mmap: Avoid the sanitizer configure check failure
>   mmap: Avoid the sanitizer configure check failure
>
>  bfd/Makefile.in          |  2 +-
>  bfd/aclocal.m4           |  1 +
>  bfd/configure            |  5 +++++
>  bfd/configure.ac         |  2 +-
>  binutils/Makefile.in     |  2 +-
>  binutils/aclocal.m4      |  1 +
>  binutils/configure       |  5 +++++
>  binutils/configure.ac    |  2 +-
>  config/mmap.m4           | 12 ++++++++++++
>  config/no-executables.m4 |  4 ++--
>  ld/Makefile.in           |  2 +-
>  ld/aclocal.m4            |  1 +
>  ld/configure             |  5 +++++
>  ld/configure.ac          |  2 +-
>  libctf/Makefile.in       |  2 +-
>  libctf/aclocal.m4        |  1 +
>  libctf/configure         |  5 +++++
>  libctf/configure.ac      |  2 +-
>  libiberty/Makefile.in    |  1 +
>  libiberty/acinclude.m4   |  2 +-
>  libiberty/aclocal.m4     |  1 +
>  libiberty/configure      |  5 +++++
>  libsframe/Makefile.in    |  1 +
>  libsframe/aclocal.m4     |  1 +
>  libsframe/configure      |  5 +++++
>  libsframe/configure.ac   |  2 +-
>  zlib/Makefile.in         |  2 +-
>  zlib/acinclude.m4        |  1 +
>  zlib/configure           |  7 -------
>  29 files changed, 64 insertions(+), 20 deletions(-)
  
H.J. Lu April 9, 2024, 11:23 p.m. UTC | #2
On Tue, Apr 9, 2024 at 4:08 PM Sam James <sam@gentoo.org> wrote:
>
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > When -fsanitize=address,undefined is used to build, the mmap configure
> > check failed with
>
> I think Paul fixed this in autoconf commit
> 09b6e78d1592ce10fdc975025d699ee41444aa3f, so we should add a comment
> about that so we can clean this up in future.

Sure . That was in 2016.

> >
> > =================================================================
> > ==231796==ERROR: LeakSanitizer: detected memory leaks
> >
> > Direct leak of 4096 byte(s) in 1 object(s) allocated from:
> >     #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
> >     #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239
> >
> > Direct leak of 4096 byte(s) in 1 object(s) allocated from:
> >     #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
> >     #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190
> >
> > SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).
> >
> > Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
> > the sanitizer configure check failure.
> >
> > H.J. Lu (2):
> >   mmap: Avoid the sanitizer configure check failure
> >   mmap: Avoid the sanitizer configure check failure
> >
> >  bfd/Makefile.in          |  2 +-
> >  bfd/aclocal.m4           |  1 +
> >  bfd/configure            |  5 +++++
> >  bfd/configure.ac         |  2 +-
> >  binutils/Makefile.in     |  2 +-
> >  binutils/aclocal.m4      |  1 +
> >  binutils/configure       |  5 +++++
> >  binutils/configure.ac    |  2 +-
> >  config/mmap.m4           | 12 ++++++++++++
> >  config/no-executables.m4 |  4 ++--
> >  ld/Makefile.in           |  2 +-
> >  ld/aclocal.m4            |  1 +
> >  ld/configure             |  5 +++++
> >  ld/configure.ac          |  2 +-
> >  libctf/Makefile.in       |  2 +-
> >  libctf/aclocal.m4        |  1 +
> >  libctf/configure         |  5 +++++
> >  libctf/configure.ac      |  2 +-
> >  libiberty/Makefile.in    |  1 +
> >  libiberty/acinclude.m4   |  2 +-
> >  libiberty/aclocal.m4     |  1 +
> >  libiberty/configure      |  5 +++++
> >  libsframe/Makefile.in    |  1 +
> >  libsframe/aclocal.m4     |  1 +
> >  libsframe/configure      |  5 +++++
> >  libsframe/configure.ac   |  2 +-
> >  zlib/Makefile.in         |  2 +-
> >  zlib/acinclude.m4        |  1 +
> >  zlib/configure           |  7 -------
> >  29 files changed, 64 insertions(+), 20 deletions(-)
  
Alan Modra April 10, 2024, 5:39 a.m. UTC | #3
On Tue, Apr 09, 2024 at 07:24:33AM -0700, H.J. Lu wrote:
> Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
> the sanitizer configure check failure.

OK for binutils.  (I just fixed my local copy of autoconf so I
wouldn't run into this again.)  The proper fix of course is to update
autotools to something more recent.
  
H.J. Lu April 10, 2024, 10:56 a.m. UTC | #4
On Tue, Apr 9, 2024 at 10:39 PM Alan Modra <amodra@gmail.com> wrote:
>
> On Tue, Apr 09, 2024 at 07:24:33AM -0700, H.J. Lu wrote:
> > Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
> > the sanitizer configure check failure.
>
> OK for binutils.  (I just fixed my local copy of autoconf so I
> wouldn't run into this again.)  The proper fix of course is to update
> autotools to something more recent.
>

This is what I am checking in with:

dnl
dnl Avoid the sanitizer run-time memory leak failure in the mmap configure
dnl test.  This should be removed when autoconf with commit:
dnl
dnl commit 09b6e78d1592ce10fdc975025d699ee41444aa3f
dnl Author: Paul Eggert <eggert@cs.ucla.edu>
dnl Date:   Fri Feb 5 21:06:20 2016 -0800
dnl Fix memory leak in AC_FUNC_MMAP
dnl
dnl * lib/autoconf/functions.m4 (AC_FUNC_MMAP): Fix memory leak
dnl in test case, found by configuring with gcc -fsanitize=address.
dnl
dnl is in use.
dnl

Thanks.