Mail Archives: djgpp-workers/2001/09/08/14:23:16
> From: "Juan Manuel Guerrero" <ST001906 AT HRZ1 DOT HRZ DOT TU-Darmstadt DOT De>
> Organization: Darmstadt University of Technology
> Date: Sat, 8 Sep 2001 19:29:49 +0200
>
> > Does it crash if you run cc1 individually (not from GCC? do gcc -v and
> > manually do the CC1 step)
> Yes, it crashes in the same way.
This probably means the nested invocation is not an issue. Selector
freeing probably also isn't relevant, since it only happens inside
dosexec.c, and cc1.exe alone doesn't invoke any programs, so doesn't
call dosexec, right?
> make.exe[2]: Entering directory `z:/tmp/sed/lib'
> gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c getopt1.c
> gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c getopt.c
> Exiting due to signal SIGSEGV
> General Protection Fault at eip=00240a7d
> eax=000002a7 ebx=00240b84 ecx=00000010 edx=00000000 esi=00240b84 edi=ffffffa4
> ebp=00000fbc esp=00000fbc program=D:\CVS\LIB\GCC-LIB\DJGPP\3.01\CC1.EXE
> cs: sel=029f base=82cc7000 limit=004affff
> ds: sel=02a7 base=82cc7000 limit=004affff
> es: sel=02a7 base=82cc7000 limit=004affff
> fs: sel=027f base=00022720 limit=0000ffff
> gs: sel=02b7 base=00000000 limit=0010ffff
> ss: sel=0173 invalid
> App stack: [00346978..002c6978] Exceptn stack: [002c63c0..002c4480]
>
> Call frame traceback EIPs:
> 0x00240a7d ___djgpp_exception_table+301
>
> 2) Compiling sed30280 on plain DOS:
> d:/cvs/bin/make.exe all-recursive
[...]
> Exiting due to signal SIGSEGV
> Page fault at eip=001c0df1, error=0004
> eax=00000002 ebx=00000008 ecx=00000002 edx=00000000 esi=00000002 edi=0019a59c
> ebp=003461e8 esp=00345cc0 program=d:/cvs/bin/../lib/gcc-lib/djgpp/3.01/cc1.exe
> cs: sel=0227 base=105b0000 limit=004affff
> ds: sel=022f base=105b0000 limit=004affff
> es: sel=022f base=105b0000 limit=004affff
> fs: sel=020f base=0003b540 limit=0000ffff
> gs: sel=023f base=00000000 limit=0010ffff
> ss: sel=022f base=105b0000 limit=004affff
> App stack: [00346978..002c6978] Exceptn stack: [002c63c0..002c4480]
>
> Call frame traceback EIPs:
> 0x001c0df1 _find_reloads+737, line ?? of reload.c
Note that the two crashes seem very different. Also note that the
first crash was on the second compilation, so the first compilation
ran to completion without crashing.
> Silly programs like:
>
> #include <stdio.h>
> main()
> {
> int i;
> for (i=0;i<10000;i++)
> printf("i=%i\n",i);
> }
>
> can be compiled without difficulty.
This probably means that you need a sufficiently complex source file
to cause a crash. Hardware problems usually manifest themselves like
that, but we still have to explain why older versions of GCC didn't
crash.
Andris, what significant changes were introduced into GCC between v3.0
and 3.0.1? (I mean not only DJGPP-specific changes.)
- Raw text -