[Open64-devel] [open64] validation check errors and core dumps in GNU m4-1.4.7
Brought to you by:
ributzka,
suneeljain
From: Nelson H. F. B. <be...@ma...> - 2006-10-01 15:05:20
|
I've recently been involved in extensive validation test of the latest GNU m4-1.4.7 release from ftp://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.bz2* My testing has demonstrated correct validations of this release in more than 100 different compilation environments on 29 different flavors of Unix, including GNU/Linux on IA-64, and even Minix-3 on IA-32, and OpenBSD and NetBSD on the SIMH VAX virtual machines. On IA-64, I have % opencc --version PathScale EKOPath(TM) Compiler Suite: Version 1.0 Built on: 2006-09-22 17:04:16 -0400 ... The build of m4 was successful, but some of the tests fail, as exhibited at the end of this message. The test failures appear to be largely confined to the regular-expression pattern match code, except for the core dump in test 108.format, which exercises snprintf(). I've seen problems with other compilers with the regular-expression match code in this and other packages many times before, notably in GNU gawk, which also uses the regular-expression code from the gnulib project. The regular-expression code is nontrivial: 11,602 lines out of the 31,340 lines in this release of m4. Sometimes, it is enough to just recompile regex.c without optimization to make the errors disappear. Unfortunately, an attempt to do that with opencc reveals yet another problem: /usr/local/bin/opencc -DHAVE_CONFIG_H -I. -I. -I.. -g -c regex.c Signal: Segmentation fault in Final SP adjustment phase. Error: Signal Segmentation fault in phase Final SP adjustment -- processing aborted *** Internal stack backtrace: /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be.so [0x20000000003e60b0] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be.so [0x20000000003e78a0] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be.so(ErrMsgLine+0x3a60d0) [0x2000000 0003e6680] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be.so [0x20000000003e8900] [0xa0000000000107e0] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/cg.so(_Z14Gen_Literal_TNxi+0xf5a740) [0x2000000000f9ad10] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/cg.so(_Z23EETARG_Fixup_Entry_CodeP2bb +0xd2f8e0) [0x2000000000d6fec0] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/cg.so(_Z22Adjust_Entry_Exit_CodeP2ST+ 0xd8d090) [0x2000000000dcd680] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/cg.so(CG_Generate_Code+0xdc31e0) [0x2 000000000e03270] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be [0x400000000000e4b0] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be [0x4000000000011080] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be(main+0x1ffffffffffd4510) [0x400000 0000013980] /lib/tls/libc.so.6.1(__libc_start_main+0x8b8e30) [0x20000000008f9430] /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be(_start+0x1ffffffffffc9730) [0x4000 000000009d40] opencc INTERNAL ERROR: /opt/open64/usr/lib/gcc-lib/ia64-pathscale-linux/1.0/be died due to sig nal 4 Since m4 is a key constituent inside the widely-used GNU autoconf system, open64 developers may find it profitable to track down and fix the errors in opencc that this testing reveals. Here is how to reproduce the problem: % env CC=/usr/local/bin/opencc CXX=/usr/local/bin/openc++ \ LDFLAGS="-Wl,-rpath,/usr/local/lib" FC=g77 F77=g77 \ ./configure && make all check ... Checking ./097.regexp @ ../doc/m4.texinfo:3536: Origin of test ./097.regexp: stdout mismatch 1,3c1,3 < 5 < -1 < *** Unix *** nix *** --- > > > @ ../doc/m4.texinfo:3536: Origin of test ./097.regexp: stderr mismatch 0a1,4 > m4:stdin:1: bad regular expression: `\<[a-z]\w+': Memory exhausted > m4:stdin:2: bad regular expression: `\<Q\w*': Memory exhausted > m4:stdin:3: bad regular expression: `\w\(\w+\)$': Memory exhausted > m4:stdin:4: bad regular expression: `\<Q\w*': Memory exhausted Checking ./098.regexp @ ../doc/m4.texinfo:3549: Origin of test ./098.regexp: stdout mismatch 1d0 < \b0a 3c2,3 < c --- > > @ ../doc/m4.texinfo:3549: Origin of test ./098.regexp: stderr mismatch 1,5c1,3 < m4:stdin:2: Warning: sub-expression 1 not present < m4:stdin:2: Warning: trailing \ ignored in replacement < m4:stdin:3: Warning: sub-expression 4 not present < m4:stdin:3: Warning: sub-expression 5 not present < m4:stdin:3: Warning: sub-expression 6 not present --- > m4:stdin:1: bad regular expression: `\(b\)': Memory exhausted > m4:stdin:2: bad regular expression: `b': Memory exhausted > m4:stdin:3: bad regular expression: `\(\(d\)?\)\(c\)': Memory exhausted Checking ./104.patsubst @ ../doc/m4.texinfo:3695: Origin of test ./104.patsubst: stdout mismatch 1,6c1,6 < OBS: GNUs not Unix < OBS: GNUs OBS: not OBS: Unix < (GNUs)() (not)() (Unix)() < (GNUs) (not) (Unix) < GN not < GNUs NOT Unix --- > > > > > > @ ../doc/m4.texinfo:3695: Origin of test ./104.patsubst: stderr mismatch 1c1,6 < m4:stdin:6: Warning: trailing \ ignored in replacement --- > m4:stdin:1: bad regular expression `^': Memory exhausted > m4:stdin:2: bad regular expression `\<': Memory exhausted > m4:stdin:3: bad regular expression `\w*': Memory exhausted > m4:stdin:4: bad regular expression `\w+': Memory exhausted > m4:stdin:5: bad regular expression `[A-Z][a-z]+': Memory exhausted > m4:stdin:6: bad regular expression `not': Memory exhausted Checking ./105.patsubst @ ../doc/m4.texinfo:3724: Origin of test ./105.patsubst: stdout mismatch 1c1 < Gnus Not Unix --- > @ ../doc/m4.texinfo:3724: Origin of test ./105.patsubst: stderr mismatch 0a1 > m4:stdin:8: bad regular expression `\w+': Memory exhausted Checking ./106.patsubst @ ../doc/m4.texinfo:3740: Origin of test ./106.patsubst: stdout mismatch 1,4c1,4 < bar FOO baz FOO < FOO < bab abb 212 < bab --- > > > > @ ../doc/m4.texinfo:3740: Origin of test ./106.patsubst: stderr mismatch 0a1,4 > m4:stdin:4: bad regular expression `foo\|Foo': Memory exhausted > m4:stdin:4: bad regular expression: `foo\|Foo': Memory exhausted > m4:stdin:5: bad regular expression `\(.\)\(.\)\1': Memory exhausted > m4:stdin:5: bad regular expression: `\(.\)\(.\)\1': Memory exhausted Checking ./107.patsubst Checking ./108.format ./check-them: line 53: 24890 Done sed -e '/^dnl @/d' -e '/^\^D$/q' "$file" 24891 Segmentation fault | LC_MESSAGES=C m4 -d -I "$examples" - >$out 2>$err @ ../doc/m4.texinfo:3779: Origin of test ./108.format: stdout mismatch 1,4d0 < < The string "The brown fox jumped over the lazy dog" uses 38 characters < 56790 < 300 ... Failed checks were: ./097.regexp:out ./097.regexp:err ./098.regexp:out ./098.regexp:err ./104.patsubst:out ./104.patsubst:err ./105.patsubst:out ./105.patsubst:err ./106.patsubst:out ./106.patsubst:err ./108.format:out ------------------------------------------------------------------------------- - Nelson H. F. Beebe Tel: +1 801 581 5254 - - University of Utah FAX: +1 801 581 4148 - - Department of Mathematics, 110 LCB Internet e-mail: be...@ma... - - 155 S 1400 E RM 233 be...@ac... be...@co... - - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ - ------------------------------------------------------------------------------- |