>>>>> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes:

Akim> I don't get it.  I no longer can see it.  I wonder what has
Akim> changed in my env.

Arg...  It seems that --disable-shared hides it.  Or is it dmalloc?  I
don't know.  But CVS M4 with a plain ./configure, on the current CVS
Autoconf gives:


src/ace/tests % ./testsuite.058 -x                               nostromo 10:28
## ------------------------------ ##
## GNU Autoconf 2.52e test suite. ##
## ------------------------------ ##
58. acc.at:18: testing AC_LANG_CPLUSPLUS...
+ cat
+ set +vx
acc.at:18: autoconf --include=$srcdir 
+ autoconf --include=.
--- /dev/null   Fri Jun 15 10:16:37 2001
+++ at-stderr   Mon Oct 15 10:29:08 2001
@@ -0,0 +1,2 @@
+Memory bounds violation detected (SIGSEGV).  Either a stack overflow
+occurred, or there is a bug in /usr/local/bin/m4.  Check for possible infinite 
+recursion.
acc.at:18: exit code was 1, expected 0
58. acc.at:18: FAILED near `acc.at:18'


src/ace/tests % cat configure.ac                                 nostromo 10:29
AC_INIT
AC_CONFIG_AUX_DIR($top_srcdir/config)
AC_CONFIG_HEADER(config.h:config.hin)
AC_STATE_SAVE(before)
AC_LANG_CPLUSPLUS
AC_OUTPUT
AC_STATE_SAVE(after)

If you use autoconf -f -v, you learn that:

/usr/local/bin/m4 --nesting-limit=1024 --include=/usr/local/share/autoconf 
--define=m4_warnings=syntax --debug=aflq --error-output=autom4te.cachhe/traces.0 
--trace=AC_CHECK_FUNCS --trace=AC_CHECK_HEADERS --trace=AC_CHECK_LIB 
--trace=AC_CHECK_TYPES --trace=AC_CONFIG_FILES --trace=AC_CONFIG_HEADERS 
--trace=AC_C_CONST --trace=AC_C_INLINE --trace=AC_DECL_SYS_SIGLIST 
--trace=AC_DEFINE_TRACE_LITERAL --trace=AC_FUNC_ALLOCA --trace=AC_FUNC_CHOWN 
--trace=AC_FUNC_ERROR_AT_LINE --trace=AC_FUNC_FNMATCH --trace=AC_FUNC_FORK 
--trace=AC_FUNC_FSEEKO --trace=AC_FUNC_GETGROUPS --trace=AC_FUNC_GETLOADAVG 
--trace=AC_FUNC_GETPGRP --trace=AC_FUNC_LSTAT --trace=AC_FUNC_MALLOC 
--trace=AC_FUNC_MEMCMP --trace=AC_FUNC_MKTIME --trace=AC_FUNC_MMAP 
--trace=AC_FUNC_OBSTACK --trace=AC_FUNC_SETPGRP --trace=AC_FUNC_SETVBUF_REVERSED 
--trace=AC_FUNC_STAT --trace=AC_FUNC_STRCOLL --trace=AC_FUNC_STRERROR_R 
--trace=AC_FUNC_STRFTIME --trace=AC_FUNC_STRTOD --trace=AC_FUNC_UTIME_NULL 
--trace=AC_FUNC_VPRINTF --trace=AC_FUNC_WAIT3 --trace=AC_HEADER_DIRENT 
--trace=AC_HEADER_MAJOR --trace=AC_HEADER_STAT --trace=AC_HEADER_STDC 
--trace=AC_HEADER_SYS_WAIT --trace=AC_HEADER_TIME --trace=AC_LIBSOURCE 
--trace=AC_PATH_X --trace=AC_PROG_AWK --trace=AC_PROG_CC --trace=AC_PROG_CPP 
--trace=AC_PROG_CXX --trace=AC_PROG_GCC_TRADITIONAL --trace=AC_PROG_INSTALL 
--trace=AC_PROG_LEX --trace=AC_PROG_LIBTOOL --trace=AC_PROG_LN_S 
--trace=AC_PROG_MAKE_SET --trace=AC_PROG_RANLIB --trace=AC_PROG_YACC 
--trace=AC_STRUCT_ST_BLOCKS --trace=AC_STRUCT_TIMEZONE --trace=AC_STRUCT_TM 
--trace=AC_SUBST --trace=AC_TYPE_MODE_T --trace=AC_TYPE_OFF_T --trace=AC_TYPE_PID_T 
--trace=AC_TYPE_SIGNAL --trace=AC_TYPE_SIZE_T --trace=AC_TYPE_UID_T --trace=AH_OUTPUT 
--trace=AM_CONDITIONAL --trace=AM_GNU_GETTEXT --trace=AM_PROG_LIBTOOL --trace=include 
--trace=m4_include --trace=m4_pattern_allow --trace=m4_pattern_forbid 
--reload-state=/usr/local/share/autoconf/autoconf/autoconf.m4f aclocal.m4 configure.ac 
</dev/null >autom4te.cache/output.0
Memory bounds violation detected (SIGSEGV).  Either a stack overflow
occurred, or there is a bug in /usr/local/bin/m4.  Check for possible infinite 
recursion.
autom4te: /usr/local/bin/m4 --nesting-limit=1024: failed with exit status: 139

if you remove the traces, it passes:

src/ace/tests % /usr/local/bin/m4 --nesting-limit=1024 
--include=/usr/local/share/autoconf --define=m4_warnings=syntax --debug=aflq 
--error-output=autom4te.cachhe/traces.0 
--reload-state=/usr/local/share/autoconf/autoconf/autoconf.m4f aclocal.m4 configure.ac 
</dev/null >autom4te.cache/output.0
src/ace/tests %                                                  nostromo 10:31



Now for the bad news.  Believe me or not, but if I try to remove *one*
--trace, I no longer observe the SEGV.  I tried a few of them, and
each one simply ``fixed�� the SEGV :(

src/ace/tests % gdb /usr/local/bin/m4                            nostromo Err 1
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
....
Program received signal SIGSEGV, Segmentation fault.
0x400397d5 in m4_symtab_hash () from /usr/local/lib/libm4.so.0
(gdb) l
No symbol table is loaded.  Use the "file" command.
(gdb) where
#0  0x400397d5 in m4_symtab_hash () from /usr/local/lib/libm4.so.0
#1  0x4002b493 in m4_hash_lookup_node () from /usr/local/lib/libm4.so.0
#2  0x4002b43c in m4_hash_lookup () from /usr/local/lib/libm4.so.0
#3  0x4003979d in m4_symbol_destroy () from /usr/local/lib/libm4.so.0
#4  0x40039612 in m4_symtab_apply () from /usr/local/lib/libm4.so.0
#5  0x4003973c in m4_symtab_exit () from /usr/local/lib/libm4.so.0
#6  0x804abce in main ()
#7  0x4006c6ef in __libc_start_main () from /lib/libc.so.6



_______________________________________________
Bug-m4 mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-m4

Reply via email to