Mercurial > gnulib
view m4/poll_h.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
# poll_h.m4 serial 2 dnl Copyright (C) 2010-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. dnl Written by Bruno Haible. AC_DEFUN([gl_POLL_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_POLL_H_DEFAULTS]) AC_CHECK_HEADERS_ONCE([poll.h]) if test $ac_cv_header_poll_h = yes; then HAVE_POLL_H=1 else HAVE_POLL_H=0 fi AC_SUBST([HAVE_POLL_H]) dnl <poll.h> is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([poll.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include <poll.h>]], [poll]) ]) AC_DEFUN([gl_POLL_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_POLL_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_POLL_H_DEFAULTS], [ GNULIB_POLL=0; AC_SUBST([GNULIB_POLL]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_POLL=1; AC_SUBST([HAVE_POLL]) REPLACE_POLL=0; AC_SUBST([REPLACE_POLL]) ])