Article View: gnu.g++.bug
Article #1254g++ 2.3.2 gets a fatal signal 6...
From: Douglas C. Schmidt
Date: Sun, 13 Dec 1992 03:53
Date: Sun, 13 Dec 1992 03:53
812 lines
22189 bytes
22189 bytes
% gcc -v -g x.C
Reading specs from /usr/gnu/version/gcc/2.3.2/lib/gcc-lib/sparc-sun-sunos4.2/2.3.2/specs
gcc version 2.3.2
/usr/gnu/version/gcc/2.3.2/lib/gcc-lib/sparc-sun-sunos4.2/2.3.2/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__unix -g x.C /i0/da/ud/schmidt/.trash/cca04411.i
GNU CPP version 2.3.2 (sparc)
/usr/gnu/version/gcc/2.3.2/lib/gcc-lib/sparc-sun-sunos4.2/2.3.2/cc1plus /i0/da/ud/schmidt/.trash/cca04411.i -quiet -dumpbase x.cc -g -version -fdelayed-branch -fstrength-reduce -finline-functions -o /i0/da/ud/schmidt/.trash/cca04411.s
GNU C++ version 2.3.2 (sparc) compiled by GNU C version 2.3.2.
x.C:219: inconsistent return types for method `set_length' in class `Message_Buffer<Message_Data>'
x.C:772: warning: dbx info for template class methods not yet supported
/i0/da/ud/schmidt/bin/gcc: Internal compiler error: program cc1plus got fatal signal 6
----------------------------------------
extern "C"
{
extern "C" {
typedef int sigset_t;
typedef unsigned int speed_t;
typedef unsigned long tcflag_t;
typedef unsigned char cc_t;
typedef int pid_t;
typedef unsigned short mode_t;
typedef short nlink_t;
typedef long clock_t;
typedef long time_t;
typedef int size_t;
typedef int ptrdiff_t;
typedef unsigned short wchar_t;
}
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef struct _physadr_t { int r[1]; } *physadr_t;
typedef struct label_t {
int val[2];
} label_t;
typedef struct _quad_t { long val[2]; } quad_t;
typedef long daddr_t;
typedef char * caddr_t;
typedef unsigned long ino_t;
typedef short dev_t;
typedef long off_t;
typedef unsigned short uid_t;
typedef unsigned short gid_t;
typedef long key_t;
typedef char * addr_t;
typedef long fd_mask;
typedef struct fd_set {
fd_mask fds_bits[(((256 )+(( (sizeof (fd_mask) * 8 ) )-1))/( (sizeof (fd_mask) * 8 ) )) ];
} fd_set;
}
struct ipc_perm {
ushort uid;
ushort gid;
ushort cuid;
ushort cgid;
ushort mode;
ushort seq;
key_t key;
};
struct msqid_ds {
struct ipc_perm msg_perm;
struct msg *msg_first;
struct msg *msg_last;
ushort msg_cbytes;
ushort msg_qnum;
ushort msg_qbytes;
ushort msg_lspid;
ushort msg_lrpid;
time_t msg_stime;
time_t msg_rtime;
time_t msg_ctime;
};
struct msgbuf {
long mtype;
char mtext[1];
};
struct msg {
struct msg *msg_next;
long msg_type;
ushort msg_ts;
ushort msg_spot;
};
extern "C"
{
extern "C" {
typedef int faultcode_t;
void (*__hide_signal ())();
void (*sigset())();
int sighold();
int sigrelse();
int sigignore();
struct sigvec {
void (*sv_handler)();
int sv_mask;
int sv_flags;
};
struct sigstack {
char *ss_sp;
int ss_onstack;
};
struct sigcontext {
int sc_onstack;
int sc_mask;
int sc_sp;
int sc_pc;
int sc_npc;
int sc_psr;
int sc_g1;
int sc_o0;
int sc_wbcnt;
char *sc_spbuf[31 ];
int sc_wbuf[31 ][16];
};
struct sigaction {
void (*sa_handler)();
sigset_t sa_mask;
int sa_flags;
};
void (*__hide_signal ())();
int kill( );
int sigaction(
);
int sigaddset( );
int sigdelset( );
int sigemptyset( );
int sigfillset( );
int sigismember( );
int sigpending( );
int sigprocmask( );
int sigsuspend( );
}
}
extern "C" {
typedef void (*SignalHandler) (...);
typedef int (*SSignalHandler) (...);
extern SignalHandler signal (...) ;
extern SSignalHandler ssignal (...) ;
extern int gsignal (...) ;
extern int kill (...) ;
extern int killpg (...) ;
extern int siginterrupt (...) ;
extern void psignal (...) ;
extern int sigsetmask (...) ;
extern int sigblock (...) ;
extern int sigpause (...) ;
extern int sigvec (...) ;
}
extern "C" {
extern struct _iobuf {
int _cnt;
unsigned char *_ptr;
unsigned char *_base;
int _bufsiz;
short _flag;
char _file;
} _iob[];
extern struct _iobuf *__hide_fopen ();
extern struct _iobuf *__hide_fdopen ();
extern struct _iobuf *__hide_freopen ();
extern struct _iobuf *__hide_popen ();
extern struct _iobuf *tmpfile();
extern long __hide_ftell ();
extern char *fgets();
extern char *gets();
extern char *__hide_sprintf ();
extern char *ctermid();
extern char *cuserid();
extern char *__hide_tempnam ();
extern char *tmpnam();
}
extern "C" {
int fclose(struct _iobuf *);
struct _iobuf * fdopen(int, const char*);
int fflush(struct _iobuf *);
int fgetc(struct _iobuf *);
char* fgets(char*, int, struct _iobuf *);
struct _iobuf * fopen(const char*, const char*);
int fprintf(struct _iobuf *, const char* ...);
int fputc(int, struct _iobuf *);
int fputs(const char*, struct _iobuf *);
int fread(void*, int , int , struct _iobuf *);
struct _iobuf * freopen(const char*, const char*, struct _iobuf *);
int fscanf(struct _iobuf *, const char* ...);
int fseek(struct _iobuf *, long, int);
long ftell(struct _iobuf *);
int fwrite(const void*, int , int , struct _iobuf *);
char* gets(char*);
int getw(struct _iobuf *);
int pclose(struct _iobuf *);
void perror(const char*);
struct _iobuf * popen(const char*, const char*);
int printf(const char* ...);
int puts(const char*);
int putw(int, struct _iobuf *);
int rewind(struct _iobuf *);
int scanf(const char* ...);
void setbuf(struct _iobuf *, char*);
void setbuffer(struct _iobuf *, char*, int);
int setlinebuf(struct _iobuf *);
int setvbuf(struct _iobuf *, char*, int, int );
int sscanf(char*, const char* ...);
struct _iobuf * tmpfile();
int ungetc(int, struct _iobuf *);
int vfprintf (...) ;
int vprintf (...) ;
char* sprintf (...) ;
char* vsprintf (...) ;
extern int _filbuf (...) ;
extern int _flsbuf (...) ;
}
template <class T>
class Message_Buffer
{
public:
Message_Buffer (int type = 0, int length = sizeof (T));
Message_Buffer (const T &data, int type = 0, int length = sizeof (T));
~Message_Buffer (void);
int get_type (void);
void set_type (int type);
int get_length (void);
int set_length (int l);
T &get_data (void);
void set_data (const T &data);
private:
long type;
int length;
T data;
};
template <class T> inline
Message_Buffer<T>::Message_Buffer (int t, int l)
: type (t), length (l)
{
}
template <class T> inline
Message_Buffer<T>::Message_Buffer (const T &d, int t, int l)
: data (d), type (t), length (l)
{
}
template <class T> inline
Message_Buffer<T>::~Message_Buffer (void)
{
}
template <class T> inline int
Message_Buffer<T>::get_type (void)
{
return this->type;
}
template <class T> inline void
Message_Buffer<T>::set_type (int t)
{
this->type = t;
}
template <class T> inline int
Message_Buffer<T>::get_length (void)
{
return this->length + sizeof this->length;
}
template <class T> inline void
Message_Buffer<T>::set_length (int l)
{
this->length = l;
}
template <class T> inline T &
Message_Buffer<T>::get_data (void)
{
return this->data;
}
template <class T> inline void
Message_Buffer<T>::set_data (const T &d)
{
this->data = d;
}
extern "C"
{
int msgsnd (int, void *, int, int);
int msgrcv (int, void *, int, int, int);
int msgctl (int, int, struct msqid_ds *);
int msgget (int, int);
}
template <class T>
class Message_Queue
{
public:
enum {CREATE = 0001000 , OPEN = 0};
Message_Queue (void);
Message_Queue (key_t external_id, int create = Message_Queue::OPEN, int perms = 0666);
~Message_Queue (void);
int open (key_t external_id, int create = Message_Queue::OPEN, int perms = 0666);
int cntl (int option, struct msqid_ds *arg);
int remove (void);
int recv (Message_Buffer<T> &mb, int mtype, int mflags = 0);
int send (Message_Buffer<T> &mb, int mflags = 0);
private:
int internal_id;
Message_Queue (const Message_Queue &);
void operator= (const Message_Queue &);
};
template <class T> inline int
Message_Queue<T>::open (key_t external_id, int create, int perms)
{
return this->internal_id = msgget (external_id, create | perms);
}
template <class T> inline int
Message_Queue<T>::cntl (int option, struct msqid_ds *arg)
{
return ::msgctl (this->internal_id, option, arg);
}
template <class T> inline int
Message_Queue<T>::remove (void)
{
return ::msgctl (this->internal_id, 0 , 0);
}
template <class T> inline
Message_Queue<T>::Message_Queue (void)
{
}
template <class T> inline
Message_Queue<T>::Message_Queue (key_t external_id, int create, int perms)
{
if (this->open (external_id, create, perms) < 0)
perror ("Message_Queue::Message_Queue");
}
template <class T> inline
Message_Queue<T>::~Message_Queue (void)
{
}
template <class T> inline
Message_Queue<T>::Message_Queue (const Message_Queue &)
{
}
template <class T> inline void
Message_Queue<T>::operator= (const Message_Queue &)
{
}
template <class T> inline int
Message_Queue<T>::recv (Message_Buffer<T> &mb, int mflags)
{
return ::msgrcv (this->internal_id, &mb, mb.get_length (), mb.get_type (), mflags);
}
template <class T> inline int
Message_Queue<T>::send (Message_Buffer<T> &mb, int mflags)
{
return ::msgsnd (this->internal_id, &mb, mb.get_length (), mflags);
}
extern "C" {
char* strcat(char*, const char*);
char* strchr(const char*, int);
int strcmp(const char*, const char*);
int strcoll(const char*, const char*);
char* strcpy(char*, const char*);
int strcspn(const char*, const char*);
char* strdup(const char*);
int strlen(const char*);
char* strncat(char*, const char*, int );
int strncmp(const char*, const char*, int );
char* strncpy(char*, const char*, int );
char* strpbrk(const char*, const char*);
char* strrchr(const char*, int);
int strspn(const char*, const char*);
char* strstr(const char*, const char *);
char* strtok(char*, const char*);
int strxfrm(char*, const char*, int );
char* index(const char*, int);
char* rindex(const char*, int);
}
extern "C" {
}
extern "C" {
void* memalign (...) ;
void* memccpy (...) ;
void* memchr (...) ;
int memcmp (...) ;
void* memcpy (...) ;
void* memmove (...) ;
void* memset (...) ;
int ffs (...) ;
int getpagesize (...) ;
void* valloc (...) ;
void bcopy (...) ;
int bcmp (...) ;
void bzero (...) ;
}
extern "C" {
}
extern "C" {
int abs(int);
void volatile abort(void);
double atof(const char*);
int atoi(const char*);
long atol(const char*);
int atexit(auto void (*p) (void));
int bsearch (const void *, const void *, int ,
int , auto int (*ptf)(const void*, const void*));
void* calloc(int , int );
void cfree(void*);
void volatile exit(int);
char* fcvt(double, int, int*, int*);
void free(void*);
char* getenv(const char*);
int getopt(int, char * const *, const char*);
int getpw(int, char*);
char* gcvt(double, int, char*);
char* ecvt(double, int, int*, int*);
extern char** environ;
long labs(long);
void* malloc(int );
int malloc_usable_size(void*);
int putenv(const char*);
extern char* optarg;
extern int opterr;
extern int optind;
void qsort(void*, int , int , auto int (*ptf)(void*,void*));
int rand(void);
void* realloc(void*, int );
int setkey(const char*);
int srand(unsigned int);
double strtod(const char*, char**);
long strtol(const char*, char**, int);
unsigned long stroul(const char**, int);
int system(const char*);
long random(void);
void srandom(int);
char* setstate(char*);
char* initstate(unsigned, char*, int);
double drand48(void);
void lcong48(short*);
long jrand48(short*);
long lrand48(void);
long mrand48(void);
long nrand48(short*);
short* seed48(short*);
void srand48(long);
char* ctermid(char*);
char* cuserid(char*);
char* tempnam(const char*, const char*);
char* tmpnam(char*);
}
extern "C" {
}
extern "C" {
extern void _exit( );
extern int access( );
extern unsigned alarm( );
extern int chdir( );
extern int __hide_chmod ( );
extern int __hide_chown ( );
extern int close( );
extern char *ctermid( );
extern char *cuserid( );
extern int dup( );
extern int dup2( );
extern int __hide_execl ( );
extern int __hide_execle ( );
extern int __hide_execlp ( );
extern int execv( );
extern int execve( );
extern int execvp( );
extern pid_t fork( );
extern long fpathconf( );
extern char *getcwd( );
extern gid_t getegid( );
extern uid_t geteuid( );
extern gid_t getgid( );
extern int getgroups( );
extern char *getlogin( );
extern pid_t getpgrp( );
extern pid_t getpid( );
extern pid_t getppid( );
extern uid_t getuid( );
extern int isatty( );
extern int link( );
extern off_t lseek( );
extern long pathconf( );
extern int pause( );
extern int pipe( );
extern int read( );
extern int rmdir( );
extern int __hide_setgid ( );
extern int setpgid( );
extern pid_t setsid( );
extern int __hide_setuid ( );
extern unsigned sleep( );
extern long sysconf( );
extern pid_t tcgetpgrp( );
extern int tcsetpgrp( );
extern char *ttyname( );
extern int unlink( );
extern int write( );
extern void volatile _exit(int);
extern unsigned alarm (...) ;
extern int brk (...) ;
extern int chdir (...) ;
extern int chmod (...) ;
extern int chown (const char*, unsigned short , unsigned short );
extern int close (...) ;
extern char* crypt (...) ;
extern int dup (...) ;
extern int dup2 (...) ;
extern void encrypt (...) ;
extern int execl (const char*, const char *, ...);
extern int execle (const char*, const char *, ...);
extern int execlp (const char*, const char*, ...);
extern int exect (...) ;
extern int execv (...) ;
extern int execve (...) ;
extern int execvp (...) ;
extern int fchown (int, unsigned short , unsigned short );
extern int fork (...) ;
extern int fsync (...) ;
extern int ftruncate (...) ;
extern char* getcwd (...) ;
extern int getdomainname (...) ;
extern int getdtablesize (...) ;
extern int getgroups (...) ;
extern unsigned short geteuid (...) ;
extern unsigned short getegid (...) ;
extern unsigned short getgid (...) ;
extern long gethostid (...) ;
extern int gethostname (...) ;
extern int getpgrp (...) ;
extern int getpid (...) ;
extern int getppid (...) ;
extern char* getlogin (...) ;
extern char* getpass (...) ;
extern unsigned short getuid (...) ;
extern int ioctl (int, int, ... );
extern int isatty (...) ;
extern int link (...) ;
extern int mkstemp (...) ;
extern char* mktemp (...) ;
extern int nice (...) ;
extern int pause (...) ;
extern int pipe (...) ;
extern int readlink (...) ;
extern int rename (...) ;
extern int rmdir (...) ;
extern void* sbrk (...) ;
extern int syscall (...) ;
extern int setgid (unsigned short );
extern int sethostname (...) ;
extern int setpgrp (...) ;
extern int setregid (...) ;
extern int setreuid (...) ;
extern int setuid (unsigned short );
extern unsigned sleep (...) ;
extern void swab (...) ;
extern int symlink (...) ;
extern long sysconf (...) ;
extern int truncate (...) ;
extern char* ttyname (...) ;
extern int ttyslot (...) ;
extern int unlink (...) ;
extern int vfork (...) ;
extern int vadvise (...) ;
extern int vhangup (...) ;
extern long lseek (...) ;
extern int read (...) ;
extern int write (...) ;
extern int access (...) ;
extern int flock (...) ;
}
extern "C" {
extern int errno;
extern char* sys_errlist[];
extern int sys_nerr;
extern int errno;
void perror(const char*);
char* strerr(int);
}
extern "C" {
struct flock {
short l_type;
short l_whence;
long l_start;
long l_len;
short l_pid;
short l_xxx;
};
struct eflock {
short l_type;
short l_whence;
long l_start;
long l_len;
short l_pid;
short l_xxx;
long l_rpid;
long l_rsys;
};
extern "C"
{
struct stat {
dev_t st_dev;
ino_t st_ino;
mode_t st_mode;
short st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
off_t st_size;
time_t st_atime;
int st_spare1;
time_t st_mtime;
int st_spare2;
time_t st_ctime;
int st_spare3;
long st_blksize;
long st_blocks;
long st_spare4[2];
};
int __hide_chmod ( );
int fstat( );
int mkdir( );
int mkfifo( );
int stat( );
mode_t umask( );
extern int chmod (...) ;
extern int stat (...) ;
extern int lstat (...) ;
extern int fstat (...) ;
}
int __hide_open ( );
int __hide_creat ( );
int __hide_fcntl ( );
int fcntl(int, int, ...);
int creat (...) ;
int open (...) ;
}
extern "C" {
int strcasecmp (...) ;
}
extern "C" {
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
char *tm_zone;
long tm_gmtoff;
};
extern struct tm *__hide_gmtime (), *__hide_localtime ();
extern char *__hide_asctime (), *__hide_ctime ();
extern void __hide_tzset (), __hide_tzsetwall ();
extern int dysize();
extern time_t timelocal(), timegm();
extern char* asctime (...) ;
extern char* ctime (...) ;
double difftime (...) ;
extern struct tm* gmtime (...) ;
extern struct tm* localtime (...) ;
extern long mktime(struct tm*);
extern int strftime (...) ;
extern void tzset();
extern void tzsetwall();
extern int getitimer(int, struct itimerval*);
extern int setitimer (...) ;
extern int gettimeofday(struct timeval*, struct timezone*);
extern int settimeofday (...) ;
extern int stime (...) ;
extern int dysize(int);
long clock(void);
long time(long *);
unsigned ualarm(unsigned, unsigned);
unsigned usleep(unsigned);
void profil (...) ;
}
extern "C"
{
struct linger {
int l_onoff;
int l_linger;
};
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
struct sockproto {
u_short sp_family;
u_short sp_protocol;
};
struct msghdr {
caddr_t msg_name;
int msg_namelen;
struct iovec *msg_iov;
int msg_iovlen;
caddr_t msg_accrights;
int msg_accrightslen;
};
int select (...) ;
int accept (...) ;
int bind (...) ;
int connect (...) ;
int getsockname (...) ;
int getpeername (...) ;
int getsockopt(int, int, int, void*, int*);
int listen(int, int);
int rcmd (...) ;
int recv(int, void*, int, int);
int recvfrom (...) ;
int recvmsg(int, struct msghdr*, int);
int rexec(char**, int, const char*, const char*, const char*, int*);
int rresvport(int*);
int send (...) ;
int sendto (...) ;
int sendmsg (...) ;
int setsockopt (...) ;
int shutdown(int, int);
int socket(int, int, int);
int socketpair(int, int, int, int sv[2]);
}
extern "C"
{
struct timeval {
long tv_sec;
long tv_usec;
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
}
extern "C"
{
struct rusage {
struct timeval ru_utime;
struct timeval ru_stime;
long ru_maxrss;
long ru_ixrss;
long ru_idrss;
long ru_isrss;
long ru_minflt;
long ru_majflt;
long ru_nswap;
long ru_inblock;
long ru_oublock;
long ru_msgsnd;
long ru_msgrcv;
long ru_nsignals;
long ru_nvcsw;
long ru_nivcsw;
};
struct rlimit {
int rlim_cur;
int rlim_max;
};
int getrusage(int, struct rusage*);
int getrlimit (int resource, struct rlimit *rlp);
int setrlimit (...) ;
long ulimit(int, long);
int getpriority(int, int);
int setpriority(int, int, int);
}
class Message_Data
{
public:
Message_Data (int p = -1, const char user[] = "", char text[] = "")
{
this->pid = p;
strncpy (this->username, user, 9);
strncpy (this->mtext, text, 128 );
}
int get_pid (void) { return this->pid; }
void set_pid (int p) { this->pid = p; }
char *get_user (void) { return this->username; }
void set_user (char user[]) { strncpy (username, user, 9); }
char *get_text (void) { return this->mtext; }
void set_text (char text[]) { strncpy (mtext, text, 128 ); }
private:
int pid;
char username[9];
char mtext[ 128 ];
};
Message_Queue<Message_Data> msgque ( 1234 , Message_Queue<Message_Data>::CREATE);
void
SIGNAL_handler (int sig)
{
if (msgque.remove () < 0)
perror ("msgque.close"), exit (1);
exit (0);
}
int
main (void)
{
Message_Buffer<Message_Data> recv_msg (1 );
Message_Data msg_data (getpid (), getlogin (), "I received your message.");
Message_Buffer<Message_Data> send_msg (msg_data);
signal (2 , SIGNAL_handler);
for (;;)
{
if (msgque.recv (recv_msg) < 0)
perror ("msgque.recv"), exit (1);
Message_Data &recv_msg_data = recv_msg.get_data ();
printf ("msg from client %d (user %s): %s\n",
recv_msg_data.get_pid (), recv_msg_data.get_user (), recv_msg_data.get_text ());
send_msg.set_type (recv_msg_data.get_pid ());
if (msgque.send (send_msg) < 0)
perror ("msgque.send"), exit (1);
}
exit (0);
}
Technical Details
Message-ID:
<9212131153.aa20322@Paris.ics.uci.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!net1.ics.uci.edu!schmidtShow Full Headers
Complete Article Headers
Newsgroups: gnu.g++.bug Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!net1.ics.uci.edu!schmidt From: schmidt@net1.ics.uci.edu (Douglas C. Schmidt) Subject: g++ 2.3.2 gets a fatal signal 6... Message-ID: <9212131153.aa20322@Paris.ics.uci.edu> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Sun, 13 Dec 1992 03:53:20 GMT Approved: bug-g++@prep.ai.mit.edu Lines: 813