picrin-scheme / picrin

lightweight scheme interpreter
MIT License
414 stars 35 forks source link

Precompile built-in macros #334

Closed nyuichi closed 7 years ago

KeenS commented 8 years ago

@wasabiz I like it. However, this coredumps on my laptop.

$ make clean
rm -f src/load_piclib.c src/init_contrib.c
rm -f lib/libbenz.so
rm -f extlib/benz/eval.o extlib/benz/weak.o extlib/benz/state.o extlib/benz/lib.o extlib/benz/vector.o extlib/benz/read.o extlib/benz/error.o extlib/benz/port.o extlib/benz/debug.o extlib/benz/pair.o extlib/benz/gc.o extlib/benz/bool.o extlib/benz/dict.o extlib/benz/var.o extlib/benz/load.o extlib/benz/value.o extlib/benz/data.o extlib/benz/cont.o extlib/benz/char.o extlib/benz/file.o extlib/benz/write.o extlib/benz/blob.o extlib/benz/number.o extlib/benz/record.o extlib/benz/proc.o extlib/benz/string.o extlib/benz/symbol.o extlib/benz/boot.o
rm -f src/main.o src/load_piclib.o src/init_contrib.o
rm -f contrib/10.callcc/callcc.o contrib/10.math/math.o contrib/10.roundtrip/emyg_dtoa.o contrib/10.roundtrip/emyg_atod.o contrib/20.r7rs/src/r7rs.o contrib/20.r7rs/src/file.o contrib/20.r7rs/src/load.o contrib/20.r7rs/src/system.o contrib/20.r7rs/src/time.o contrib/30.random/src/mt19937ar.o contrib/30.random/src/random.o contrib/30.regexp/src/regexp.o contrib/40.srfi/src/0.o contrib/40.srfi/src/106.o contrib/60.repl/repl.o
make -C tools clean
make[1]: Entering directory '/home/kim/C/picrin/tools'
rm -f mkboot
make[1]: Leaving directory '/home/kim/C/picrin/tools'
$ make
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o src/main.o src/main.c
perl etc/mkloader.pl  contrib/10.attribute/attr.scm contrib/10.macro/macro.scm contrib/20.r7rs/scheme/base.scm contrib/20.r7rs/scheme/cxr.scm contrib/20.r7rs/scheme/read.scm contrib/20.r7rs/scheme/write.scm contrib/20.r7rs/scheme/file.scm contrib/20.r7rs/scheme/case-lambda.scm contrib/20.r7rs/scheme/lazy.scm contrib/20.r7rs/scheme/eval.scm contrib/20.r7rs/scheme/inexact.scm contrib/20.r7rs/scheme/load.scm contrib/20.r7rs/scheme/process-context.scm contrib/20.r7rs/scheme/time.scm contrib/20.r7rs/scheme/r5rs.scm contrib/30.optional/piclib/optional.scm contrib/30.partcont/piclib/partcont.scm contrib/30.pretty-print/pretty-print.scm contrib/30.test/test.scm contrib/40.procedure/procedure.scm contrib/40.srfi/srfi/0.scm contrib/40.srfi/srfi/1.scm contrib/40.srfi/srfi/8.scm contrib/40.srfi/srfi/17.scm contrib/40.srfi/srfi/26.scm contrib/40.srfi/srfi/43.scm contrib/40.srfi/srfi/60.scm contrib/40.srfi/srfi/95.scm contrib/40.srfi/srfi/106.scm contrib/40.srfi/srfi/111.scm contrib/50.class/piclib/picrin/class.scm contrib/50.destructuring-bind/lambda.scm contrib/50.for/piclib/for.scm contrib/50.option/option.scm contrib/60.logic/logic.scm contrib/60.peg/picrin/parser.scm contrib/60.peg/picrin/parser/string.scm contrib/60.repl/repl.scm contrib/70.main/main.scm contrib/80.protocol/piclib/picrin/protocol.scm contrib/90.array/array.scm > src/load_piclib.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o src/load_piclib.o src/load_piclib.c
perl etc/mkinit.pl  callcc math r7rs random regexp srfi_0 srfi_106 repl > src/init_contrib.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o src/init_contrib.o src/init_contrib.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/10.callcc/callcc.o contrib/10.callcc/callcc.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/10.math/math.o contrib/10.math/math.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/10.roundtrip/emyg_dtoa.o contrib/10.roundtrip/emyg_dtoa.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/10.roundtrip/emyg_atod.o contrib/10.roundtrip/emyg_atod.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/20.r7rs/src/r7rs.o contrib/20.r7rs/src/r7rs.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/20.r7rs/src/file.o contrib/20.r7rs/src/file.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/20.r7rs/src/load.o contrib/20.r7rs/src/load.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/20.r7rs/src/system.o contrib/20.r7rs/src/system.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/20.r7rs/src/time.o contrib/20.r7rs/src/time.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/30.random/src/mt19937ar.o contrib/30.random/src/mt19937ar.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/30.random/src/random.o contrib/30.random/src/random.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/30.regexp/src/regexp.o contrib/30.regexp/src/regexp.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/40.srfi/src/0.o contrib/40.srfi/src/0.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/40.srfi/src/106.o contrib/40.srfi/src/106.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o contrib/60.repl/repl.o contrib/60.repl/repl.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/eval.o extlib/benz/eval.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/weak.o extlib/benz/weak.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/state.o extlib/benz/state.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/lib.o extlib/benz/lib.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/read.o extlib/benz/read.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/error.o extlib/benz/error.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/value.o extlib/benz/value.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/port.o extlib/benz/port.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/pair.o extlib/benz/pair.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/gc.o extlib/benz/gc.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/bool.o extlib/benz/bool.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/vector.o extlib/benz/vector.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/dict.o extlib/benz/dict.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/var.o extlib/benz/var.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/file.o extlib/benz/file.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/load.o extlib/benz/load.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/blob.o extlib/benz/blob.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/cont.o extlib/benz/cont.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/char.o extlib/benz/char.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/write.o extlib/benz/write.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/number.o extlib/benz/number.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/record.o extlib/benz/record.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/data.o extlib/benz/data.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/debug.o extlib/benz/debug.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/proc.o extlib/benz/proc.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/string.o extlib/benz/string.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/symbol.o extlib/benz/symbol.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa   -c -o extlib/benz/boot.o extlib/benz/boot.c
cc -I./extlib/benz/include -Wall -Wextra -O2 -flto -DNDEBUG=1  -DPIC_CSTRING_TO_DOUBLE=emyg_atod -DPIC_DOUBLE_TO_CSTRING=emyg_dtoa -o bin/picrin src/main.o src/load_piclib.o src/init_contrib.o contrib/10.callcc/callcc.o contrib/10.math/math.o contrib/10.roundtrip/emyg_dtoa.o contrib/10.roundtrip/emyg_atod.o contrib/20.r7rs/src/r7rs.o contrib/20.r7rs/src/file.o contrib/20.r7rs/src/load.o contrib/20.r7rs/src/system.o contrib/20.r7rs/src/time.o contrib/30.random/src/mt19937ar.o contrib/30.random/src/random.o contrib/30.regexp/src/regexp.o contrib/40.srfi/src/0.o contrib/40.srfi/src/106.o contrib/60.repl/repl.o extlib/benz/eval.o extlib/benz/weak.o extlib/benz/state.o extlib/benz/lib.o extlib/benz/read.o extlib/benz/error.o extlib/benz/value.o extlib/benz/port.o extlib/benz/pair.o extlib/benz/gc.o extlib/benz/bool.o extlib/benz/vector.o extlib/benz/dict.o extlib/benz/var.o extlib/benz/file.o extlib/benz/load.o extlib/benz/blob.o extlib/benz/cont.o extlib/benz/char.o extlib/benz/write.o extlib/benz/number.o extlib/benz/record.o extlib/benz/data.o extlib/benz/debug.o extlib/benz/proc.o extlib/benz/string.o extlib/benz/symbol.o extlib/benz/boot.o -lm
extlib/benz/string.c: In function ‘pic_vstrf_value’:
extlib/benz/string.c:244:7: warning: ‘buf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   str = pic_str_value(pic, buf, len);
       ^
extlib/benz/string.c:237:15: note: ‘buf’ was declared here
   const char *buf;
               ^
extlib/benz/string.c:244:7: warning: ‘len’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   str = pic_str_value(pic, buf, len);
       ^
extlib/benz/string.c:238:7: note: ‘len’ was declared here
   int len;
       ^
extlib/benz/number.c: In function ‘pic_number_string_to_number’:
extlib/benz/number.c:258:13: warning: variable ‘flo’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
   pic_value flo = pic_false_value(pic), e;
             ^
extlib/benz/number.c: In function ‘pic_number_number_to_string’:
extlib/benz/number.c:244:9: warning: ‘len’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     str = pic_str_value(pic, buf, len);
         ^
extlib/benz/number.c:240:9: note: ‘len’ was declared here
     int len;
         ^
extlib/benz/number.c:244:9: warning: ‘buf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     str = pic_str_value(pic, buf, len);
         ^
extlib/benz/number.c:239:17: note: ‘buf’ was declared here
     const char *buf;
                 ^
$ make test
bin/picrin contrib/10.macro/t/ir-macro.scm
case 0 PASS: (aif (member 'b '(a b c)) (car it) #f) equals b
case 1 PASS: (let ((if 42)) (mif 1 2 3)) equals 2
case 2 PASS: (let ((it 42)) (mif 1 it 2)) equals 42
case 3 PASS: (mif 'a 'b 'c) equals b
*** longjmp causes uninitialized stack frame ***: bin/picrin terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x78bee)[0x7fd6727acbee]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7fd67284ce3c]
/lib/x86_64-linux-gnu/libc.so.6(+0x118d3d)[0x7fd67284cd3d]
/lib/x86_64-linux-gnu/libc.so.6(__longjmp_chk+0x29)[0x7fd67284cc99]
bin/picrin[0x41fcf5]
[0x158f158]
======= Memory map: ========
00400000-0044f000 r-xp 00000000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
0064e000-0064f000 r--p 0004e000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
0064f000-00661000 rw-p 0004f000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
00661000-00663000 rw-p 00000000 00:00 0 
0157b000-01b9c000 rw-p 00000000 00:00 0                                  [heap]
7fd671e14000-7fd671e2a000 r-xp 00000000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd671e2a000-7fd672029000 ---p 00016000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd672029000-7fd67202a000 r--p 00015000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd67202a000-7fd67202b000 rw-p 00016000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd67202b000-7fd67242c000 rw-p 00000000 00:00 0 
7fd67242c000-7fd672533000 r-xp 00000000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7fd672533000-7fd672732000 ---p 00107000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7fd672732000-7fd672733000 r--p 00106000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7fd672733000-7fd672734000 rw-p 00107000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7fd672734000-7fd6728f4000 r-xp 00000000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7fd6728f4000-7fd672af4000 ---p 001c0000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7fd672af4000-7fd672af8000 r--p 001c0000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7fd672af8000-7fd672afa000 rw-p 001c4000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7fd672afa000-7fd672afe000 rw-p 00000000 00:00 0 
7fd672afe000-7fd672b22000 r-xp 00000000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7fd672c95000-7fd672cfd000 rw-p 00000000 00:00 0 
7fd672cfd000-7fd672d21000 rw-p 00000000 00:00 0 
7fd672d21000-7fd672d22000 r--p 00023000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7fd672d22000-7fd672d23000 rw-p 00024000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7fd672d23000-7fd672d24000 rw-p 00000000 00:00 0 
7ffdffbf5000-7ffdffc16000 rw-p 00000000 00:00 0                          [stack]
7ffdffd72000-7ffdffd74000 r--p 00000000 00:00 0                          [vvar]
7ffdffd74000-7ffdffd76000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
contrib/10.macro/nitro.mk:6: recipe for target 'test-macro' failed
make: *** [test-macro] 中止 (コアダンプしました)
$ ls tools
Makefile  built-in.scm  mkboot.c
$ uname -a
Linux T440p 4.2.0-30-generic #36-Ubuntu SMP Fri Feb 26 00:58:07 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /proc
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3841.480
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 0
cpu cores   : 4
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3708.828
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 0
cpu cores   : 4
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3848.617
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 1
cpu cores   : 4
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3747.570
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 1
cpu cores   : 4
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 4
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3846.578
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 2
cpu cores   : 4
apicid      : 4
initial apicid  : 4
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 5
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3744.058
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 2
cpu cores   : 4
apicid      : 5
initial apicid  : 5
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 6
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3770.453
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 3
cpu cores   : 4
apicid      : 6
initial apicid  : 6
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 7
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz
stepping    : 3
microcode   : 0x1c
cpu MHz     : 3783.027
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 3
cpu cores   : 4
apicid      : 7
initial apicid  : 7
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs        :
bogomips    : 5787.09
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

cat /proc/meminfo
MemTotal:        7858516 kB
MemFree:          821452 kB
MemAvailable:    3159128 kB
Buffers:          196084 kB
Cached:          2519892 kB
SwapCached:         5672 kB
Active:          4516676 kB
Inactive:        2025956 kB
Active(anon):    3293384 kB
Inactive(anon):  1179952 kB
Active(file):    1223292 kB
Inactive(file):   846004 kB
Unevictable:          92 kB
Mlocked:              92 kB
SwapTotal:       8065020 kB
SwapFree:        7676908 kB
Dirty:               136 kB
Writeback:             0 kB
AnonPages:       3821412 kB
Mapped:           677280 kB
Shmem:            646680 kB
Slab:             362848 kB
SReclaimable:     310092 kB
SUnreclaim:        52756 kB
KernelStack:       13616 kB
PageTables:        53372 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    11994276 kB
Committed_AS:   12114068 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      624756 kB
VmallocChunk:   34358161404 kB
HardwareCorrupted:     0 kB
AnonHugePages:    849920 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      131908 kB
DirectMap2M:     4790272 kB
DirectMap1G:     3145728 kB

And I have a question: can this be applied to nitros?

KeenS commented 8 years ago

I found that call/cc is broken

$ make run
bin/picrin
> (call/cc (lambda (k) (k 1)))
*** longjmp causes uninitialized stack frame ***: bin/picrin terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x78bee)[0x7f066f25fbee]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f066f2ffe3c]
/lib/x86_64-linux-gnu/libc.so.6(+0x118d3d)[0x7f066f2ffd3d]
/lib/x86_64-linux-gnu/libc.so.6(__longjmp_chk+0x29)[0x7f066f2ffc99]
bin/picrin[0x41fcf5]
[0x16731d0]
======= Memory map: ========
00400000-0044f000 r-xp 00000000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
0064e000-0064f000 r--p 0004e000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
0064f000-00661000 rw-p 0004f000 fc:00 2753460                            /home/kim/C/picrin/bin/picrin
00661000-00663000 rw-p 00000000 00:00 0 
0165f000-01c80000 rw-p 00000000 00:00 0                                  [heap]
7f066e8c7000-7f066e8dd000 r-xp 00000000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f066e8dd000-7f066eadc000 ---p 00016000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f066eadc000-7f066eadd000 r--p 00015000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f066eadd000-7f066eade000 rw-p 00016000 fc:00 4854118                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f066eade000-7f066eedf000 rw-p 00000000 00:00 0 
7f066eedf000-7f066efe6000 r-xp 00000000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7f066efe6000-7f066f1e5000 ---p 00107000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7f066f1e5000-7f066f1e6000 r--p 00106000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7f066f1e6000-7f066f1e7000 rw-p 00107000 fc:00 4853168                    /lib/x86_64-linux-gnu/libm-2.21.so
7f066f1e7000-7f066f3a7000 r-xp 00000000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7f066f3a7000-7f066f5a7000 ---p 001c0000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7f066f5a7000-7f066f5ab000 r--p 001c0000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7f066f5ab000-7f066f5ad000 rw-p 001c4000 fc:00 4853169                    /lib/x86_64-linux-gnu/libc-2.21.so
7f066f5ad000-7f066f5b1000 rw-p 00000000 00:00 0 
7f066f5b1000-7f066f5d5000 r-xp 00000000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7f066f706000-7f066f7b0000 rw-p 00000000 00:00 0 
7f066f7b0000-7f066f7d4000 rw-p 00000000 00:00 0 
7f066f7d4000-7f066f7d5000 r--p 00023000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7f066f7d5000-7f066f7d6000 rw-p 00024000 fc:00 4853163                    /lib/x86_64-linux-gnu/ld-2.21.so
7f066f7d6000-7f066f7d7000 rw-p 00000000 00:00 0 
7ffda12c6000-7ffda12e7000 rw-p 00000000 00:00 0                          [stack]
7ffda13ef000-7ffda13f1000 r--p 00000000 00:00 0                          [vvar]
7ffda13f1000-7ffda13f3000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Makefile:66: recipe for target 'run' failed
make: *** [run] 中止 (コアダンプしました)
KeenS commented 8 years ago

FYI according to git bisect, b070d9c1dc3c2597e57cef88331d5d0dc8ea4512 is the first bad commit

KeenS commented 8 years ago

As it is approved that this bug comes from master, not this PR, go ahead to merge.

KeenS commented 8 years ago

@nyuichi How is the state?

nyuichi commented 7 years ago

closing as solved