[gnu.gcc.bug] gnucc and signal 6

news@brian386.UUCP (Wm. Brian McCane) (05/04/89)

Okay, I have a question.  While compiling a program recently posted on
the net, with GNU CC, I got:

gnucc: Program cc1 got fatal signal 6.

I looked this up in the SDS manual, and it says that signal 6 is SIGIOT,
and has the ever helpful description:

SIGIOT	06	IOT instruction

(Thanks guys ;-)  Anyway, what is an IOT instruction and why would I be
getting one during a compile.

My system is MicroPort V386r3.0e.

	Any help greatly appreciated

	brian

-- 
Wm. Brian McCane                    | Life is full of doors that won't open
                                    | when you knock, equally spaced amid
Disclaimer: I don't think they even | those that open when you don't want
            admit I work here.      | them to. - Roger Zelazny "Blood of Amber"

guy@auspex.auspex.com (Guy Harris) (05/06/89)

 >gnucc: Program cc1 got fatal signal 6.
 >
 >I looked this up in the SDS manual, and it says that signal 6 is SIGIOT,
 >and has the ever helpful description:
 >
 >SIGIOT	06	IOT instruction
 >
 >(Thanks guys ;-)  Anyway, what is an IOT instruction and why would I be
 >getting one during a compile.
 >
 >My system is MicroPort V386r3.0e.

And the manual is being stupid.  An IOT instruction is an instruction on
the PDP-11; a routine called "abort()" in PDP-11 UNIX executed this
instruction.  That routine was to be used by programs that were "at the
end of their rope", and wanted to exit and force a core dump.  In later
UNIX releases, "abort()" just sent a SIGIOT signal to the process
itself, which means it didn't have to execute some instruction that
might not even exist.  In even later UNIX releases, such as S5R3 - upon
which the Microport release in question is, I assume, based, so I don't
understand why it doesn't follow suit here - the signal SIGIOT was
renamed SIGABRT, to reflect the fact that it now meant
"program-generated abort" rather than "IOT instruction executed".

The message means "Program cc1 came to the end of its rope and executed
'abort()' in the hopes that somebody might be able to paw through its
core dump and figure out what went wrong."  Have fun with the "core"
file....

news@brian386.UUCP (Wm. Brian McCane) (05/06/89)

In article <433@brian386.UUCP> news@brian386.UUCP (Wm. Brian McCane) writes:
>...  While compiling a program recently posted on
>the net, with GNU CC, I got:
>
>gnucc: Program cc1 got fatal signal 6.
>
>I looked this up in the SDS manual, and it says that signal 6 is SIGIOT,
>
>SIGIOT	06	IOT instruction
>
>Anyway, what is an IOT instruction and why would I be
>getting one during a compile.
>
>My system is MicroPort V386r3.0e.

A new twist on the same theme.  I have discovered that when I am
compiling, I only get the problem with the '-g' option, if I compile
with no options or with -O, it works just fine.  Of course this isn't
too helpful when your debugging a program.  The command I am using is:

	gnucc -DUSG -g -c file.c

I am also using GNU MAKE 3.47, and am not using the GNU assembler.

	thx in advantz
	brian

-- 
Wm. Brian McCane                    | Life is full of doors that won't open
                                    | when you knock, equally spaced amid
Disclaimer: I don't think they even | those that open when you don't want
            admit I work here.      | them to. - Roger Zelazny "Blood of Amber"

bzs@bu-cs.BU.EDU (Barry Shein) (05/06/89)

From: news@brian386.UUCP (Wm. Brian McCane)
>SIGIOT	06	IOT instruction
>
>(Thanks guys ;-)  Anyway, what is an IOT instruction and why would I be
>getting one during a compile.
>
>My system is MicroPort V386r3.0e.

Aha! That's your problem, an IOT is an instruction on a PDP-11, you
have the wrong machine!

What's probably happened is the compiler has called abort(3) after
detecting an internal error to try to force a core dump of itself,
abort() uses SIGIOT (sends itself a kill(0,SIGIOT) on the assumption
that it won't be used for anything else so will take the default
action and core dump.)

IOT really is a PDP-11 instruction (I/O Trap) so the name is just a
hangover tho the concept probably could have been valid (eg.
asynchronous I/O completion or I/O error) but alas they couldn't keep
their grubby little hands off it :-)
-- 

	-Barry Shein, Software Tool & Die

There's nothing more terrifying to hardware vendors than
satisfied customers.

phd_ivo@gsbacd.uchicago.edu (05/11/89)

***************************************************** 
>A new twist on the same theme.  I have discovered that when I am
>compiling, I only get the problem with the '-g' option, if I compile
>with no options or with -O, it works just fine.

Well, I have a program running on NeXt's gnu that aborts with 6 if I compile
with -gg -O, but not with -gg only (i.e., no -O). :-) It's not even a program I
wrote, but a simple function from the Numerical Recipees book. Now I have to
figure out where to send bug reports...

/ivo welch	phd_ivo@gsbacd.uchicago.edu