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]

Re: comptypes() segfaults


I just filed a gnats report on above subject, but I should have
mentioned that the code in question compiled fine on EGCS 1.x, GCC
2.95.x, and RedHat 2.96 on a variety of architectures.


robertlipe@usa.net wrote:
> 
> >Submitter-Id:	net
> >Originator:	Robert Lipe
> >Organization:	
> >Confidential:	no
> >Synopsis:	comptypes() segfaults
> >Severity:	critical 
> >Priority:	medium 
> >Category:	c
> >Class:		ice-on-legal-code 
> >Release:	3.0.1 20010806 (prerelease)
> >Environment:
> System: Linux rjlinux 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 unknown
> Architecture: i686
> 
> 	
> host: i686-pc-linux-gnu
> build: i686-pc-linux-gnu
> target: i686-pc-linux-gnu
> configured with: /play/egcs/configure --enable-languages=c --prefix=/usr/local/gcc3
> >Description:
> 
> The following (admittedly horrifying) code will ICE gcc for IA32 as of today
> and a slightly-before-3.0 version for IA64 Linux in the same way.
> 
>  
> Program received signal SIGSEGV, Segmentation fault.
> 0x0805873c in comptypes (type1=0x401b9a28, type2=0x401b98f0)
>     at /play/egcs/gcc/c-typeck.c:519
> 519             if (d1 == 0 || d2 == 0 || d1 == d2
> 
> Here's the source:
> 
> 
> typedef struct { volatile int counter; } atomic_t;
> typedef struct _udi_osdep_atomic_int_opaque {
>     unsigned long PADDINGTOP[0];
>     atomic_t val;
>     unsigned long PADDINGBOT[0];
> } udi_osdep_atomic_int_opaque_t;
> typedef struct _udi_osdep_event_opaque
> {
>     unsigned long PADDINGTOP[0];
>     volatile int signaled;
>     volatile int destroyed;
>     volatile int waiting;
>     volatile int waiter_busy;
>     volatile int waiter_waiting;
>     unsigned long PADDINGBOT[0];
> } udi_osdep_event_opaque_t;
> extern struct _udi_osdep_atomic_int_opaque _udi_osdep_atomic_int_opaque; struct
> _udi_osdep_atomic_int_opaque _udi_osdep_atomic_int_opaque ; struct
> _udi_osdep_atomic_int_opaque__opaque { unsigned long TOP_PAD[0]; char opaque[
> sizeof(struct _udi_osdep_atomic_int_opaque) ]; unsigned long END_PAD[0]; };
> extern struct _udi_osdep_atomic_int_opaque__opaque
> _udi_osdep_atomic_int_opaque__opaque_var; struct
> _udi_osdep_atomic_int_opaque__opaque _udi_osdep_atomic_int_opaque__opaque_var
> ;extern short _udi_osdep_atomic_int_opaque__is_invalid; short
> _udi_osdep_atomic_int_opaque__is_invalid = sizeof(_udi_osdep_atomic_int_opaque)
> - sizeof(_udi_osdep_atomic_int_opaque__opaque_var); extern char
> _udi_osdep_atomic_int_opaque__IS_INVALID[((sizeof(_udi_osdep_atomic_int_opaque))
> > (sizeof(_udi_osdep_atomic_int_opaque__opaque_var)) ?
> ((sizeof(_udi_osdep_atomic_int_opaque)) -
> (sizeof(_udi_osdep_atomic_int_opaque__opaque_var))) :
> ((sizeof(_udi_osdep_atomic_int_opaque__opaque_var)) -
> (sizeof(_udi_osdep_atomic_int_opaque))))]; char
> _udi_osdep_atomic_int_opaque__IS_INVALID[((sizeof(_udi_osdep_atomic_int_opaque))
> > (sizeof(_udi_osdep_atomic_int_opaque__opaque_var)) ?
> ((sizeof(_udi_osdep_atomic_int_opaque)) -
> (sizeof(_udi_osdep_atomic_int_opaque__opaque_var))) :
> ((sizeof(_udi_osdep_atomic_int_opaque__opaque_var)) -
> (sizeof(_udi_osdep_atomic_int_opaque))))];
> 
> 
> >How-To-Repeat:
> Simply cut/paste the above and attempt to compile.
> 	$ /usr/local/gcc3/bin/gcc  a.c
> 	a.c:38: Internal error: Segmentation fault
> >Fix:
> 	


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