Matthias Lang matthias@REDACTED
Thu Mar 11 09:16:50 CET 2004

Paul Aviles writes:
 > I am trying to compile erlang on a Sun Cobalt box (linux) and I am getting
 > this while running make.. any ideas?

 > gcc: Internal compiler error: program cc1 got fatal signal 4

This isn't an Erlang problem, it's a GCC or hardware problem.

Signal 4 is "illegal instruction", i.e. the CPU tried to execute an
opcode which isn't allowed.

That typically happens when you have hardware problems. Try compiling
some other large piece of software (e.g. gcc itself) and see if you
see similar problems.

Concrete suggestions:

  - Try a more recent version of gcc (you didn't say which you were using)

  - Compile on another machine

  - Download a precompiled release 

  - Make sure the cobalt box isn't running hot (is the fan broken? is
    it clogged with dust? is something else blowing hot air on it?)


30) What does the message "Internal compiler error: cc1 got fatal signal 11,4" mean ?

Ans:	Gcc is probably the biggest memory hog you likely to run on your
	machine and it will surely eat up a lot of your RAM. Usually a fatal
	signal 11 will mean some sort of parity errors in your RAM or other
	hardware faults. I had this once when `cc1' got corrupted due to a
	race condition and bad blocks on my hard disk. There have also been
	reports that overheating chips, (not french fries), can also produce
	such errors. And watch for poor IDE controller/drive combos that
	are being run faster than the standard 8MHz AT bus clock. These
	can give the same errors by causing corruption of the swap space.

	Usually, a signal 11 (segmentation violation) means that a process
	tried to access memory out of its process space, or tried to write
	into a read-only location.  Sometimes, this signal is caused by
	software bugs, not by hardware faults (or your system would hang
	repeatedly, because the same thing happened to the kernel).  With
	gcc 2.3.3, some people could reproduce a lot of "signal 11"'s.

	A "fatal signal 4" has been reported to be generated due to lack of
	memory (happened on a 4MB system).

	Also it can mean a failure in one of the `ld' or `as' stages. Try
	recompiling whatever with a -v flag to gcc and see if it is failing
	in one of the cc1, cpp, as or ld stages possibly.

More information about the erlang-questions mailing list