This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Wierd sparc sunos4 intermittant SEGV during bootstrap in libgcc2.a


	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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]