bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: recursion limit of 1024 exceeded


From: Dagobert Michelsen
Subject: Re: recursion limit of 1024 exceeded
Date: Sat, 12 Dec 2020 18:21:55 +0100

Hi Bruno,

Am 12.12.2020 um 17:25 schrieb Bruno Haible <bruno@clisp.org>:
>>>> gm4:configure.ac:4574: recursion limit of 1024 exceeded, use -L<N> to 
>>>> change it
> 
> The maximum recursion limit of m4 depends how it was built. Mine has
> 
>  $ m4 --help|grep limit
>    -L, --nesting-limit=NUMBER   change nesting limit, 0 for unlimited [0]
> 
> Yours surely has
> 
>  $ m4 --help|grep limit
>    -L, --nesting-limit=NUMBER   change nesting limit, 0 for unlimited [1024]

Nope, same as yours:

dam@experimental10x [global]:/home/dam > m4 --help | grep limit 
  -L, --nesting-limit=NUMBER   change nesting limit, 0 for unlimited [0]

> This means, if m4 can react on stack overflow without knowing a priori how 
> many
> recursive macro invocations it can handle — this is the case when libsigsegv 
> is
> installed or the simple heuristic in c-stack.c works —, it does so. Only in 
> the
> other case, it uses the fixed-size nesting limit.

Does this mean that m4 should also link against libsigsegv? This is not the 
case:

dam@experimental10x [global]:/home/dam > ldd /opt/csw/gnu/m4 
        libc.so.1 =>     /lib/libc.so.1
        libm.so.2 =>     /lib/libm.so.2

> What I don't understand, is:
>  - why on your system the c-stack.c heuristic, specifically tailored for
>    Solaris, did not work,
>  - why, when (on a glibc system) I use a limit even as low as -L 1,
>    'aclocal -I glm4' and 'autoconf' run fine in the generated testdir.

I see. Is there anything I can do to further drilldown the issue?

>>> m4 --version  
>> m4 (GNU M4) 1.4.18  
> 
> By the way, autom4te does not look up m4 in $PATH; it uses the M4 environment
> variable or a program in a fixed location. Look into autom4te to find out 
> which
> m4 it actually uses.

It is my OpenCSW m4 1.4.18 as reported:

my $m4 = $ENV{"M4"} || '/opt/csw/bin/gm4‘;


Best regards

  — Dago

-- 
"You don't become great by trying to be great, you become great by wanting to 
do something,
and then doing it so hard that you become great in the process." - xkcd #896




reply via email to

[Prev in Thread] Current Thread [Next in Thread]