Compiling melt-branch revision 144904 with gcc 4.4.0 (Trunk),
4.3, or 4.1 results in a Segmentation fault in the modded 'cc1'
basilys_extra_marking() function.
Here is the "regular output" of where it fails:
Compiling ../../melt-branch/gcc/warmelt-outobj-0.c with -g
-fkeep-inline-functions -DIN_GCC -DHAVE_CONFIG_H -DMELTGCC_DYNAMIC_OBJSTRUCT
real 0m9.599s
user 0m8.321s
sys 0m0.924s
-rwxr-xr-x 1 root root 1448978 2009-03-16 20:42 warmelt-outobj-0-d.so
-rw-r--r-- 1 root root 2309220 2009-03-16 10:05
../../melt-branch/gcc/warmelt-outobj-0.c
done ./built-melt-cc-script ../../melt-branch/gcc/warmelt-outobj-0.c
warmelt-outobj-0-d.so @@@@
date +"#warmelt0.modlis generated %c" > warmelt0.modlis-tmp
for f in warmelt-first-0 warmelt-macro-0 warmelt-normal-0
warmelt-normatch-0 warmelt-genobj-0 warmelt-outobj-0; do echo $f >>
warmelt0.modlis-tmp; done
/bin/sh ../../melt-branch/gcc/../move-if-change warmelt0.modlis-tmp
warmelt0.modlis
rm -f warmelt-first-1.c
generating warmelt-first using warmelt-first-0 warmelt-macro-0 warmelt-normal-0
warmelt-normatch-0 warmelt-genobj-0 warmelt-outobj-0
WARMELT_BASE0= warmelt-first-0 warmelt-macro-0 warmelt-normal-0
warmelt-normatch-0 warmelt-genobj-0 warmelt-outobj-0 WARMELT_BASE0ROW=
warmelt-first-0-d:warmelt-macro-0-d:warmelt-normal-0-d:warmelt-normatch-0-d:warmelt-genobj-0-d:warmelt-outobj-0-d
time ./cc1 -Wno-shadow -fbasilys=translateinit -fbasilys-dynlibdir=.
-fbasilys-compile-script=/mnt/drive2/melt-branch_build/gcc/built-melt-cc-script
-fbasilys-gensrcdir=. -fbasilys-tempdir=_tempmeltdir_$$
-fbasilys-init=warmelt-first-0-d:warmelt-macro-0-d:warmelt-normal-0-d:warmelt-normatch-0-d:warmelt-genobj-0-d:warmelt-outobj-0-d
\
-fbasilys-arg=../../melt-branch/gcc/melt/warmelt-first.bysl \
-fbasilys-secondarg=warmelt-first-1.c
** warmelt generated 105 routines into warmelt-first-1.c
** from Mon 16 Mar 2009 08:41:53 PM PDT
../../melt-branch/gcc/warmelt-outobj-0.c
** of checksum d154a02b37d0b56f8a7a08c5368fded8
../../melt-branch/gcc/warmelt-outobj-0.c
cc1: note: BASILYS INFORM [#198595]: warmelt generated module -
warmelt-first-1.c
{GC 12538k -> cc1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
real 0m1.788s
user 0m1.104s
sys 0m0.292s
make[4]: *** [warmelt-first-1.c] Error 4
make[4]: Leaving directory `/mnt/drive2/melt-branch_build/gcc'
make[3]: *** [melt.encap] Error 2
In order to discover the "hidden processing" and intermediate
files (along with giving some more debugging tips) I changed
"melt-cc-script.proto" (as is suggested at the wiki's URL:
http://gcc.gnu.org/wiki/MiddleEndLispTranslator) to use "-O0"
and "--save-temps" (plus other commands) like this:
echo Compiling $csource with $melt_cflags
# time $melt_cc -O0 -v -fmem-report -ftime-report -dn -Wall -fPIC
$melt_cflags -I "$melt_headerdir" $csource -c -o $nakedynstuff.o
# $melt_cc -O0 -v -fmem-report -ftime-report -dn -Wall -fPIC -shared
$melt_cflags -I "$melt_headerdir" $datf.c $nakedynstuff.o -o $nakedynstuff.so
time $melt_cc -O0 -v -ftime-report --save-temps -Wall -fPIC
$melt_cflags -I "$melt_headerdir" $csource -c -o $nakedynstuff.o
$melt_cc -O0 -v -ftime-report --save-temps -Wall -fPIC -shared
$melt_cflags -I "$melt_headerdir" $datf.c $nakedynstuff.o -o $nakedynstuff.so
echo
After doing that I was able to run "./cc1" on the intermediate file
using 'gdb' with this result:
# cd /mnt/drive2/melt-branch_build/gcc
# file ./cc1
./cc1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically
linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
# gdb --args ./cc1 -Wno-shadow -fbasilys=translateinit -fbasilys-dynlibdir=.
-fbasilys-compile-script=/mnt/drive2/melt-branch_build/gcc/built-melt-cc-script
-fbasilys-gensrcdir=. -fbasilys-tempdir=_tempmeltdir_$$
-fbasilys-init=warmelt-first-0-d:warmelt-macro-0-d:warmelt-normal-0-d:warmelt-normatch-0-d:warmelt-genobj-0-d:warmelt-outobj-0-d
-fbasilys-arg=../../melt-branch/gcc/melt/warmelt-first.bysl
-fbasilys-secondarg=warmelt-first-1.c -v
GNU gdb 6.8-debian
...
(gdb) r
Starting program: /mnt/drive2/melt-branch_build/gcc/cc1 -Wno-shadow
-fbasilys=translateinit -fbasilys-dynlibdir=.
-fbasilys-compile-script=/mnt/drive2/melt-branch_build/gcc/built-melt-cc-script
-fbasilys-gensrcdir=. -fbasilys-tempdir=_tempmeltdir_2871
-fbasilys-init=warmelt-first-0-d:warmelt-macro-0-d:warmelt-normal-0-d:warmelt-normatch-0-d:warmelt-genobj-0-d:warmelt-outobj-0-d
-fbasilys-arg=../../melt-branch/gcc/melt/warmelt-first.bysl
-fbasilys-secondarg=warmelt-first-1.c -v
{Main zone GC 27k -> 27k} {Tree identifier zone GC 1k -> 1k} {Tree zone GC 0k
-> 0k} {RTL zone GC 0k -> 0k}** warmelt generated 105 routines into
warmelt-first-1.c
** from Tue 17 Mar 2009 09:04:44 AM PDT warmelt-outobj-0-d.c
** of checksum d154a02b37d0b56f8a7a08c5368fded8 warmelt-outobj-0-d.c
cc1: note: BASILYS INFORM [#198595]: warmelt generated module -
warmelt-first-1.c
{Main zone GC 11069k ->
Program received signal SIGSEGV, Segmentation fault.
0x081ad904 in basilys_extra_marking (xtradata=0xffdde120) at
../../melt-branch/gcc/basilys.c:515
515 if (!mi->iniframp || !*mi->iniframp || !mi->marker_rout)
(gdb) where
#0 0x081ad904 in basilys_extra_marking (xtradata=0xffdde120) at
../../melt-branch/gcc/basilys.c:515
#1 0x0848a579 in ggc_mark_roots_extra_marking (extramarker=0x81ad8aa
<basilys_extra_marking>, extradata=0xffdde120) at
../../melt-branch/gcc/ggc-common.c:121
#2 0x081987fc in ggc_collect_1 (zone=0x9623bc0, need_marking=1 '\001',
walkrout=0x81ad8aa <basilys_extra_marking>, walkdata=0xffdde120)
at ../../melt-branch/gcc/ggc-zone.c:1961
#3 0x081989cc in ggc_collect_extra_marking (walkrout=0x81ad8aa
<basilys_extra_marking>, walkdata=0xffdde120) at
../../melt-branch/gcc/ggc-zone.c:2035
#4 0x081ae1ba in basilys_garbcoll (wanted=2097152, needfull=1 '\001') at
../../melt-branch/gcc/basilys.c:675
#5 0x081bff6d in do_finalize_basilys () at
../../melt-branch/gcc/basilys.c:7097
#6 0x081c00d0 in basilys_finalize () at ../../melt-branch/gcc/basilys.c:7146
#7 0x0877d19f in toplev_main (argc=11, argv=0xffdde254) at
../../melt-branch/gcc/toplev.c:2283
#8 0x08190482 in main (argc=Cannot access memory at address 0x18
) at ../../melt-branch/gcc/main.c:35
(gdb)
Then ...
(gdb) l ../../melt-branch/gcc/basilys.c:515
510 struct callframe_basilys_st *cf = 0;
511 gcc_assert (xtradata == basilys_topframe);
512 /* first, scan all the modules and mark their frame if it is non null
*/
513 for (ix = 0; VEC_iterate (basilys_module_info_t, modinfvec, ix, mi);
ix++)
514 {
515 if (!mi->iniframp || !*mi->iniframp || !mi->marker_rout)
516 continue;
517 (mi->marker_rout) (*mi->iniframp);
518 };
519 /* then scan all the MELT call frames */
(gdb) b ../../melt-branch/gcc/basilys.c:513
Breakpoint 5 at 0x81ad8eb: file ../../melt-branch/gcc/basilys.c, line 513.
(gdb) r
...
(gdb) u
515 if (!mi->iniframp || !*mi->iniframp || !mi->marker_rout)
(gdb) print mi
$1 = (basilys_module_info_t *) 0xa7eb8a0
(gdb) where
#0 basilys_extra_marking (xtradata=0xff96ccb0) at
../../melt-branch/gcc/basilys.c:515
#1 0x0848a579 in ggc_mark_roots_extra_marking (extramarker=0x81ad8aa
<basilys_extra_marking>, extradata=0xff96ccb0) at
../../melt-branch/gcc/ggc-common.c:121
#2 0x081987fc in ggc_collect_1 (zone=0x9623bc0, need_marking=1 '\001',
walkrout=0x81ad8aa <basilys_extra_marking>, walkdata=0xff96ccb0)
at ../../melt-branch/gcc/ggc-zone.c:1961
#3 0x081989cc in ggc_collect_extra_marking (walkrout=0x81ad8aa
<basilys_extra_marking>, walkdata=0xff96ccb0) at
../../melt-branch/gcc/ggc-zone.c:2035
#4 0x081ae1ba in basilys_garbcoll (wanted=2097152, needfull=1 '\001') at
../../melt-branch/gcc/basilys.c:675
#5 0x081bff6d in do_finalize_basilys () at
../../melt-branch/gcc/basilys.c:7097
#6 0x081c00d0 in basilys_finalize () at ../../melt-branch/gcc/basilys.c:7146
#7 0x0877d19f in toplev_main (argc=11, argv=0xff96cde4) at
../../melt-branch/gcc/toplev.c:2283
#8 0x08190482 in main (argc=Cannot access memory at address 0x18
) at ../../melt-branch/gcc/main.c:35
(gdb) u
Program received signal SIGSEGV, Segmentation fault.
0x081ad904 in basilys_extra_marking (xtradata=0xff96ccb0) at
../../melt-branch/gcc/basilys.c:515
515 if (!mi->iniframp || !*mi->iniframp || !mi->marker_rout)
(gdb) print mi
$2 = (basilys_module_info_t *) 0xa7eb8a0
(gdb) print mi->iniframp
$3 = (void **) 0x11761
(gdb) print mi->marker_rout
$4 = (void (*)(void *)) 0
and to go futher:
(gdb) b ../../melt-branch/gcc/toplev.c:617
Breakpoint 6 at 0x877a291: file ../../melt-branch/gcc/toplev.c, line 617.
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0xf7721519 in ssignal () from /lib/i686/cmov/libc.so.6
(gdb) where
#0 0xf7721519 in ssignal () from /lib/i686/cmov/libc.so.6
#1 0x0877a270 in crash_signal (signo=11) at ../../melt-branch/gcc/toplev.c:607
#2 <signal handler called>
#3 0x081ad904 in basilys_extra_marking (xtradata=0xff96ccb0) at
../../melt-branch/gcc/basilys.c:515
#4 0x0848a579 in ggc_mark_roots_extra_marking (extramarker=0x81ad8aa
<basilys_extra_marking>, extradata=0xff96ccb0) at
../../melt-branch/gcc/ggc-common.c:121
#5 0x081987fc in ggc_collect_1 (zone=0x9623bc0, need_marking=1 '\001',
walkrout=0x81ad8aa <basilys_extra_marking>, walkdata=0xff96ccb0)
at ../../melt-branch/gcc/ggc-zone.c:1961
#6 0x081989cc in ggc_collect_extra_marking (walkrout=0x81ad8aa
<basilys_extra_marking>, walkdata=0xff96ccb0) at
../../melt-branch/gcc/ggc-zone.c:2035
#7 0x081ae1ba in basilys_garbcoll (wanted=2097152, needfull=1 '\001') at
../../melt-branch/gcc/basilys.c:675
#8 0x081bff6d in do_finalize_basilys () at
../../melt-branch/gcc/basilys.c:7097
#9 0x081c00d0 in basilys_finalize () at ../../melt-branch/gcc/basilys.c:7146
#10 0x0877d19f in toplev_main (argc=11, argv=0xff96cde4) at
../../melt-branch/gcc/toplev.c:2283
#11 0x08190482 in main (argc=Cannot access memory at address 0x18
) at ../../melt-branch/gcc/main.c:35
(gdb)
I'm not familiar enough with this branch to offer a patch.
Thanks,
Rob
--
Summary: [melt] - revision 144904 - BASILYS INFORM [#198595]:
warmelt-first-1.c -> SIGSEGV
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: blocker
Priority: P3
Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rob1weld at aol dot com
GCC build triplet: i686-unknown-linux-gnu
GCC host triplet: i686-unknown-linux-gnu
GCC target triplet: i686-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39484