Using m4 in the temporary tools and installing it after autoconf in chapter 6 makes a tool of a autoconf link to the m4 in /tools

Bryan Kadzban bryan at
Sun Oct 19 09:49:48 PDT 2008

Hash: RIPEMD160

Bruce Dubbs wrote:
>> Three tests were skipped:
>> cannot tell stack overflow from crash; consider installing libsigsegv
>> SKIP:
>> Skipping test: multithreading not enabled
>> SKIP: test-lock
>> Skipping test: multithreading not enabled
>> SKIP: test-tls
> We may want to configure m4 with:
> ./configure --prefix=/usr  --enable-threads
> for a complete build.

(Hmm.  I'm not quite sure what advantage threads would have in a macro
expansion language's "compiler".  I assume they have *some*, since it's
work to add threading support, but it seems to me like one of the things
that'd be fairly low on the list.  But hey, whatever.)

The only way I see that causing problems is if the threading support
isn't quite right (i.e. bugs in m4), and some kind of race condition
makes it emit wrong output.  Not sure how long threading support been
available, though; maybe it's been in there long enough that it isn't an
issue.  Doesn't matter much to me either way.

> I don't know if we want to consider libsigsegv or not.  I 
> don't know of anything other than m4 that uses it.

m4 only uses it to distinguish between a "real" segfault and a stack
overflow, on systems where it can't tell the difference (like Linux,
apparently).  I saw a reference in either bison or autom4te -- probably
autom4te -- to an m4 flag controlling how many macro expansions it would
generate before it assumed there was an infinite recursion.  (autom4te
had to increase this flag because some random autofoo tool ran into the
default limit of 250.)

Since then, m4 has raised this default limit from 250 to 0 ("infinity"),
and relies on detecting a stack overflow to decide whether the m4 input
is actually infinitely recursive.  It uses libsigsegv to do that.

(There's also a comment on some commit somewhere that says "maybe I can
get the Linux kernel to report stack overflows properly", which would
mean Linux wouldn't require libsigsegv.  But that was only a few months
ago, so I wouldn't want to rely on it happening.)

So I guess it depends on whether we want m4 to be able to detect
infinite recursion by stack overflow.  I think that if all the tools
have set the limit argument properly, it shouldn't matter (meaning we
wouldn't need libsigsegv).  But they may not set it properly in the

Maybe revisit for 7.0?
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla -


More information about the lfs-dev mailing list