view m4/ldexpf.m4 @ 37246:5cfb3a67238d

regex: avoid glibc deadlock during configure glibc has a known bug where certain corruptions of the heap can cause malloc to default to printing a debug message that includes a backtrace, but the act of getting the backtrace uses dlopen which in turn calls into malloc, causing a recursive lock ending in deadlock. Thus, when configure is probing for a known glibc heap corruption bug, the overall configure would hang. The solution suggested by glibc developers is to force malloc to quit printing debug messages, which avoids recursive malloc. * m4/regex.m4 (gl_REGEX): Avoid recursive malloc deadlock when glibc bug 15078 in turn triggers bug 16159. Reported by Michal Privoznik. Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Tue, 03 Dec 2013 10:34:13 -0700
parents c741bc27922a
children 344018b6e5d7
line wrap: on
line source

# ldexpf.m4 serial 2
dnl Copyright (C) 2011-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

AC_DEFUN([gl_FUNC_LDEXPF],
[
  AC_REQUIRE([gl_MATH_H_DEFAULTS])
  AC_REQUIRE([gl_FUNC_LDEXP])

  dnl Persuade glibc <math.h> to declare ldexpf().
  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])

  dnl Test whether ldexpf() exists. We cannot assume that ldexpf(), if it
  dnl exists, is defined in the same library as ldexp(). This is not the case
  dnl on FreeBSD, NetBSD, OpenBSD.
  gl_MATHFUNC([ldexpf], [float], [(float, int)])
  if test $gl_cv_func_ldexpf_no_libm = no \
     && test $gl_cv_func_ldexpf_in_libm = no; then
    HAVE_LDEXPF=0
    LDEXPF_LIBM="$LDEXP_LIBM"
  fi
  AC_SUBST([LDEXPF_LIBM])
])