Compiler Bug

Susan Muuss, VLD/ASB sue at BRL.MIL
Fri May 10 11:53:52 AEST 1991


Below is a sample program containing relevant lines of C code that
caused ccom to dump core with a signal 138. Apparently, a missing semi-colon
is the culprit.  However, the compiler should ordinarily catch that and
report a syntax error rather than die.  A copy of the error message
from the compiler's demise has also been appended as well a listing of
which version of the software is installed on the machine where this 
problem manifested itself.  The system is a 4D/280 with IRIX 3.3.1.

Could this be fixed?

				Cheers,
					Sue Muuss  

----------------------------------------------------

Script started on Thu May  9 21:20:41 1991
$ versions
I = Installed, R = Removed

  Name                  Date      Description
I  dev                  90/09/14  4D1-3.3 Development System
I  dwb                  89/11/20  DWB Opt PD, S4-DWB-3.2, 808-0012-010
I  eoe1                 90/09/14  4D1-3.3 Execution Only Environment (part 
                                    1)
I  eoe2                 90/09/14  4D1-3.3 Execution Only Environment (part 
                                    2)
I  ftn                  90/09/14  4D1-3.3 Fortran Option
I  maint1                         (unknown product)
I  maint1               90/09/14  Maint1 Product 4D1-3.3.1
I  nfs                  90/09/14  4D1-3.3 Network File System
I  pfa                  90/09/14  Power Fortran Accelerator
R  slip                 90/02/09  IRIS Slip Product
R  vis                  90/01/12  Personal Visualizer PD, 808-0160-001
$ 
$ lint bug2.c

bug2.c
==============
Warning: (26)  v_len may be used before set
/usr/bin/lint: 4037 Bus error - core dumped
Error: lint pass 1 failed on  bug2.c . Use cc to see compilation errors.
Correct the errors before running lint.
$ 
$ cc -c bug2.c
Fatal error in: /usr/lib/ccom - core dumped
 Signal 138 $ 
$ ls -l core
-rw-rw-r--   1 sue      graphics  504876 May  9 21:21 core
$ dbx /usr/lib/ccom
dbx version 2.0 8/6/90 14:02
Copyright 1987 Silicon Graphics Inc.
Copyright 1987 MIPS Computer Systems Inc.
Type 'help' for help.
Reading symbolic information of `/usr/lib/ccom' . . .

warning: Has no symbol table -- very little is supported without it

Process name from core dump: ccom
Process died at pc 0x41df7c of signal : bus error
[using memory image in core]
(dbx) where
>  0 (
warning: Address 0 for 4 bytes is not in the core file
0x0, 
warning: Address 0x4 for 4 bytes is not in the core file
0x0, 
warning: Address 0x8 for 4 bytes is not in the core file
0x0, 
warning: Address 0xc for 4 bytes is not in the core file
0x0, 
warning: Address 0x10 for 4 bytes is not in the core file
0x0, 
warning: Address 0x14 for 4 bytes is not in the core file
0x0) [0x41df7c]

warning: address 0xfffffffc for 4 bytes is not in the core file
(dbx) 
interrupt
(dbx) quit
$ 
script done on Thu May  9 21:22:16 1991

-----------------------------------------


/*
*	Susanne L. Muuss, J.D.
*/

#define	VADD2(a, b, c)	(a)[X] = (b)[X] + (c)[X];\
			(a)[Y] = (b)[Y] + (c)[Y];\
			(a)[Z] = (b)[Z] + (c)[Z]
#define VSET(a, b, c, d)	(a)[X] = (b);\
				(a)[Y] = (c);\
				(a)[Z] = (d)
typedef	double vect_t[3];
typedef double point_t[3];


main()
{
	int		v_char_width;	/* char. width in view space */
	float		v_len;		/* scale length in view space */
	float		v_tick_hgt;	/* total height of tick marks, view space */
	float		v_x_offset;	/* distance the label is offset in x */
	float		v_y_offset;	/* distance the label is offset in y */
	point_t		v_startpt;	/* starting point of scales, view space */
	point_t		v_label_st;	/* starting point of label, view space */
	point_t		v_offset;

	v_x_offset = 0.1 * v_len;
	v_y_offset = -(2 * v_tick_hgt + v_char_width)
	/* Error is a missing semi-colon, above, but compiler shouldn't die! */
	VSET(v_offset, v_x_offset, v_y_offset, 0);
}



More information about the Comp.sys.sgi mailing list