This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Wierd sparc sunos4 intermittant SEGV during bootstrap in libgcc2.a
- To: davem at redhat dot com, rth at cygnus dot com, wilson at cygnus dot com
- Subject: Wierd sparc sunos4 intermittant SEGV during bootstrap in libgcc2.a
- From: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Date: Fri, 3 Mar 2000 12:43:29 -0500 (EST)
- Cc: egcs-bugs at egcs dot cygnus dot com
I'm getting a very wierd intermittant error on sunos4 and I'm
trying to figure out whether its a bug in gcc or not. The error
always occurs when compiling stage1 or 2 libgcc2.a. It happens on
different modules within libgcc2.c at different times and its been
happening off and on for months now. I originally suspected that the
hardware was going south, but now I'm not so sure. The error looks
like this:
> _udivdi3
> xgcc: Internal compiler error: program cc1 got fatal signal 11
> make: *** [libgcc2.a] Error 1
but it happens on various other libgcc2.c parts too. It is non
deterministic, I can recompile manually and it works _most_ of the
time.
Here's what I get from "gdb cc1 core":
Core was generated by `cc1'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libc.so.1.9.3...done.
Reading symbols from /usr/lib/libdl.so.1.0...done.
#0 0xef77e3f0 in setup () from /usr/lib/libc.so.1.9.3
Breakpoint 1 at 0xef77438c
Breakpoint 2 at 0x7cf94: file ../../egcs-CVS20000302/gcc/rtl.c, line 1249.
Breakpoint 3 at 0xef7b451c
(gdb) where
#0 0xef77e3f0 in setup () from /usr/lib/libc.so.1.9.3
#1 0x1479a0 in output_95 (operands=0x1ee028, insn=0xef67d680)
at insn-output.c:126
#2 0x12f060 in get_insn_template (code=1341792, insn=0xef67d680)
at ../../egcs-CVS20000302/gcc/final.c:2036
#3 0x12fba4 in final_scan_insn (insn=0xef67d680, file=0x1e0fc8, optimize=0,
prescan=0, nopeepholes=1) at
../../egcs-CVS20000302/gcc/final.c:2895
#4 0x12f858 in final_scan_insn (insn=0xef6670e0, file=0x1e0fc8, optimize=2,
prescan=0, nopeepholes=0) at
../../egcs-CVS20000302/gcc/final.c:2582
#5 0x12ef5c in final (first=0xef6833a0, file=0x1e0fc8, optimize=2, prescan=0)
at ../../egcs-CVS20000302/gcc/final.c:2010
#6 0xdba0 in rest_of_compilation (decl=0xef685200)
at ../../egcs-CVS20000302/gcc/toplev.c:3714
#7 0x1ac5c8 in finish_function (nested=0)
at ../../egcs-CVS20000302/gcc/c-decl.c:6459
#8 0x197204 in yyparse () at c-parse.y:312
#9 0xb5c0 in compile_file (name=0xef73f200 <Address 0xef73f200 out of bounds>)
at ../../egcs-CVS20000302/gcc/toplev.c:2440
#10 0x1064c in main (argc=14, argv=0xeffff984)
at ../../egcs-CVS20000302/gcc/toplev.c:4874
Now the backtrace is _always_ the same when I can get the error to
occur. However it is so infrequent, I cannot reproduct it easily.
E.g. I have to do "repeat 500" when recompiling _udivdi3.o to get a
core dump reliably.
(Also, I don't know what the setup() function in libc.so is.)
Given the intermittant nature, I know this could be a hardware problem
or OS bug. However there was a similar case I reported on the sparc
around 7 or 8 years ago and IIRC Jim Wilson traced it down to needing
flush instructions, which is why I bring it up at all.
In case it matters, I am running on a sun4m, sparcstation 10, 2
processor system with sunos4.1.4. (I'm building in an NFS directory
which may trigger a kernel bug. Not sure.)
--Kaveh
--
Kaveh R. Ghazi Engagement Manager / Project Services
ghazi@caip.rutgers.edu Qwest Internet Solutions