gcc-2.96/gcc-3.0 optimization bug?
>Submitter-Id: net
>Originator: Randolph Chung <tausq@debian.org>
>Organization: Debian GNU/Linux
>Confidential: no
>Synopsis: Program compiled with gcc-2.96/gcc-3.0 with -O1 or -O2 segfaults at runtime
>Severity: serious
>Priority: medium
>Category: optimization
>Class: sw-bug
>Release: 3.0
>Environment:
System: Linux itanium 2.4.5-ia64 #1 Tue Jul 10 17:44:30 MDT 2001 ia64 unknown
Architecture: ia64
host: ia64-hp-linux-gnu
build: ia64-hp-linux-gnu
target: ia64-hp-linux-gnu
configured with: ../gcc-3.0/configure --host=ia64-hp-linux --enable-threads=posix --prefix=/opt/gcc3
>Description:
ruby-1.6.4 or guile-1.4, when compiled with gcc-2.96 (RH Wolverine or RH 7.1 version) or gcc-3.0 will cause a segmentation fault at run time if compiled with -O1 or -O2. Recompiling the applications with -g or -O0 produces binaries that appear to work correctly.
>How-To-Repeat:
See description. guile source tree that was used is available from http://people.debian.org/~tausq/guile.tgz. Ruby source tree is at http://people.debian.org/~tausq/ruby.tgz
For ruby:
running ruby with the sample/test.rb script causes a segmentation fault. Stack trace:
(gdb) bt
#0 0x20000000003ddc31 in _IO_link_in () from /lib/libc.so.6.1
#1 0x20000000003de0c0 in __overflow () from /lib/libc.so.6.1
#2 0x200000000053fef0 in __morecore () from /lib/libc.so.6.1
warning: Can't fetch instructions for slot numbers greater than 2.
Using slot 0 instead
#3 0x20000000003de0c0 in __overflow () from /lib/libc.so.6.1
#4 0x200000000016dd20 in load_file (fname=0x80000fffffffb9d7 "sample/test.rb",
script=1) at ruby.c:848
#5 0x200000000016d430 in proc_options (argc=0, argv=0x80000fffffffb7c8)
at ruby.c:726
#6 0x200000000016e940 in ruby_process_options (argc=2, argv=0x80000fffffffb7b8)
at ruby.c:1028
#7 0x20000000000ac510 in ruby_options (argc=2, argv=0x80000fffffffb7b8)
at eval.c:1129
#8 0x4000000000000c10 in main (argc=2, argv=0x80000fffffffb7b8,
envp=0x6000000000000ee8) at main.c:49
For guile:
Running /usr/bin/guile causes a segmentation fault at startup. Stack trace:
(gdb) bt
#0 0x20000000000bc990 in fport_fill_input () from /usr/lib/libguile.so.9
#1 0x20000000000f0750 in scm_fill_input () from /usr/lib/libguile.so.9
#2 0x20000000000f08c0 in scm_getc () from /usr/lib/libguile.so.9
#3 0x20000000000fe8b0 in scm_flush_ws () from /usr/lib/libguile.so.9
#4 0x2000000000100e60 in scm_lreadparen () from /usr/lib/libguile.so.9
#5 0x20000000000ff5f0 in scm_lreadr () from /usr/lib/libguile.so.9
#6 0x2000000000100df0 in scm_lreadparen () from /usr/lib/libguile.so.9
#7 0x20000000000ff5f0 in scm_lreadr () from /usr/lib/libguile.so.9
#8 0x20000000000fe7f0 in scm_read () from /usr/lib/libguile.so.9
#9 0x20000000000d4900 in load () from /usr/lib/libguile.so.9
#10 0x2000000000093e70 in scm_internal_dynamic_wind ()
from /usr/lib/libguile.so.9
#11 0x20000000000d4b70 in scm_primitive_load () from /usr/lib/libguile.so.9
#12 0x20000000000d5ce0 in scm_primitive_load_path ()
from /usr/lib/libguile.so.9
#13 0x20000000000a6700 in scm_ceval () from /usr/lib/libguile.so.9
#14 0x20000000000a9670 in scm_eval_3 () from /usr/lib/libguile.so.9
#15 0x20000000000a9830 in scm_eval_x () from /usr/lib/libguile.so.9
#16 0x20000000000d48d0 in load () from /usr/lib/libguile.so.9
#17 0x2000000000093e70 in scm_internal_dynamic_wind ()
from /usr/lib/libguile.so.9
#18 0x20000000000d4b70 in scm_primitive_load () from /usr/lib/libguile.so.9
#19 0x20000000000d5ce0 in scm_primitive_load_path ()
from /usr/lib/libguile.so.9
#20 0x20000000000ce1f0 in scm_load_startup_files () from /usr/lib/libguile.so.9
#21 0x20000000000cf1b0 in invoke_main_func () from /usr/lib/libguile.so.9
#22 0x200000000011eda0 in scm_internal_lazy_catch ()
from /usr/lib/libguile.so.9
#23 0x20000000000cf0f0 in scm_boot_guile () from /usr/lib/libguile.so.9
#24 0x00000000 in ?? ()
Reply to: