pc386dx exception 6 was Re: 4.6.0pre2 and docs released

Joel Sherrill joel.sherrill at OARcorp.com
Thu Apr 24 13:31:47 UTC 2003



Angelo Fraietta wrote:
> 
> Angelo Fraietta wrote:
> 
> >
> > Angelo Fraietta wrote:
> >
> >>
> >> >>  I am not actually using anything in the application. I included
> >> >>  the
> >> >>  iostream header but didi not use anything to make it fail. If I
> >> >>  remove
> >> >>  the include directive, the app runs and is reduced by about
> >> >>  1050K.
> >> >>
> >> > I suspect it is just calling some constructor.  It doesn't
> >> > surprise me
> >> > that the applciation shrinks.
> >> >
> > If it worth anything, I tried the follwing.
> > I rebuilt the toolset using gcc3.2.2 and Newlib 1.10 with an identical result
> > I then rebuilt the toolset using gcc3.2 and Newlib 1.11
> > With the iostream directive I got the following message
> > RTEMS: rtems_gxx_mutex_init
> > RTEMS: fatal error, exiting
> > Without the iostream include it works fine
> > --
> >
> I just did some more tests. The error that caused the rtems_gxx_mutex_init failure did not run on on the pentium machine.
> I attmpted to do the same test with gcc3.2 and newlib 1.10 (which is working for my application) and I got the same result (rtems_gxx_mutex_init).
> If, however, I perform a test using one of my own applications (where I originally found the fault), if I include iostream I get the exception 6. My real application, however, does not include iostream anywhere in it and subsequently runs fine.
> If I use gcc3.2 with newlib 1.11, my application runs (however, I never include iostream anywhere)
> If I use gcc3.2.2 with newlib 1.11, the application bloats from 462K to 621K and crashes with the exception 6. There is no change in my source whatsoever
> I think that there may be two problems here.
> If you want me to run any more tests or sequences, let me know.

I am in agreement with Ralf's hunch here.  including iostream is bound
to be 
putting some ctor in the system.  It has to be doing something that is
not
legal on a vanilla i386 system.  It could be because of inline assembly
that
is not i386 pure or incorrect code generation for pure i386 that no one
has noticed because most people are Pentium and above for Linux, BSD,
etc.

We really need to know that address of the illegal instruction so we can
figure out where it is coming from.  Fixing it then will probably be
striaghtforward.

> --
> An
> gelo Fraietta
> 
> PO Box 859
> Hamilton NSW 2303
> 
> Home Page
> 
> http://www.users.bigpond.com/angelo_f/
> 
> There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
> There are those who seek knowledge to be known by others - that is VANITY
> There are those who seek knowledge in order to serve - that is LOVE
>     Bernard of Clairvaux (1090 - 1153)

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985



More information about the users mailing list