Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault while building on i686 #2921

Closed
remexre opened this issue Nov 21, 2019 · 27 comments
Closed

Segfault while building on i686 #2921

remexre opened this issue Nov 21, 2019 · 27 comments
Assignees

Comments

@remexre
Copy link

remexre commented Nov 21, 2019

On an i686 machine with glibc 2.29, gcc 8.3.0:

make cstartup in src/racket of the 7.5 src+builtpkgs tarball:
make cstartup_`./racketcgc -cu ./src/startup-select.rkt`
make[1]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
./racketcgc -cu ./src/compile-startup.rkt cstartup.inc cstartup.zo ./src/startup.inc ./src/schvers.h
make[1]: *** [Makefile:329: cstartup_bytecode] Segmentation fault (core dumped)
make[1]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make: *** [Makefile:325: cstartup] Error 2
gdb --args ./racketcgc -cu ./src/compile-startup.rkt cstartup.inc cstartup.zo ./src/startup.inc ./src/schvers.h:
(gdb) run
Starting program: /home/nathan/Downloads/racket-7.5/src/racket/racketcgc -cu ./src/compile-startup.rkt cstartup.inc cstartup.zo ./src/startup.inc ./src/schvers.h
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0xb7fcab40 (LWP 6763)]

Thread 1 "compile-startup" received signal SIGSEGV, Segmentation fault.
0xb7cffb64 in __run_exit_handlers (status=0, listp=0xb7eb13fc <__exit_funcs>, run_list_atexit=true, run_dtors=true) at exit.c:114
114               if (__glibc_unlikely (new_exitfn_called != __new_exitfn_called))
(gdb) bt
#0  0xb7cffb64 in __run_exit_handlers (status=0, listp=0xb7eb13fc <__exit_funcs>, run_list_atexit=true, run_dtors=true) at exit.c:114
#1  0xb7cffcfe in __GI_exit (status=0) at exit.c:139
#2  0x00429257 in def_exit_handler_proc (argc=1, argv=0xbfffde04) at ./error.c:3421
#3  0x00437ccf in scheme_do_eval (obj=0xb75834b0, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2255
#4  0x004457b7 in apply_k () at ./fun.c:1502
#5  0x0044d1b8 in scheme_top_level_do_worker (k=0x445760 <apply_k>, eb=<optimized out>, new_thread=<optimized out>) at ./fun.c:1314
#6  0x0044d89f in scheme_top_level_do (eb=1, k=0x445760 <apply_k>) at ./fun.c:1517
#7  _apply (eb=1, multi=1, rands=<optimized out>, num_rands=<optimized out>, rator=<optimized out>) at ./fun.c:1517
#8  scheme_apply_multi (rator=<optimized out>, num_rands=<optimized out>, rands=<optimized out>) at ./fun.c:1529
#9  0x0042973e in scheme_do_exit (argc=1, argv=0xb74a6e64) at ./error.c:3446
#10 0x00437ccf in scheme_do_eval (obj=0xb7583370, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2255
#11 0x004b52ed in body_one_expr (prefix_plus_expr=<optimized out>, argc=<optimized out>, argv=<optimized out>) at ./linklet.c:1204
#12 0x0043854d in scheme_do_eval (obj=0xb69758b0, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2670
#13 0x004530ca in scheme_finish_apply_for_prompt (prompt=0x0, _prompt_tag=<optimized out>, proc=<optimized out>, argc=<optimized out>, argv=<optimized out>)
    at ./fun.c:6523
#14 0x004531d7 in scheme_apply_for_prompt (prompt=0xb6d24e18, prompt_tag=0xb7bd03c8, proc=<optimized out>, argc=0, argv=0x0) at ./fun.c:6602
#15 0x004563f6 in call_with_prompt (in_argc=<optimized out>, in_argv=<optimized out>) at ./fun.c:7105
#16 0x00437ccf in scheme_do_eval (obj=0xb759022c, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2255
#17 0x0044d508 in do_call_with_prompt (f=<optimized out>, data=data@entry=0xb6539ef0, multi=multi@entry=1, top_level=0) at ./fun.c:7326
#18 0x0045325a in _scheme_call_with_prompt_multi (f=<optimized out>, data=0xb6539ef0) at ./fun.c:7352
#19 0x004b7244 in scheme_linklet_run_finish (linklet=<optimized out>, instance=<optimized out>, use_prompt=<optimized out>) at ./linklet.c:1628
#20 0xb7fbe427 in ?? ()
#21 0x004b2601 in scheme_linklet_run_start (linklet=0xb75a2ea8, inst=0xb6dade04, name=<optimized out>) at ./jitstack.c:706
#22 0x004b7b17 in eval_linklet_body (use_prompt=<optimized out>, instance=<optimized out>, linklet=0xb75a2ea8) at ./linklet.c:1318
#23 instantiate_linklet_k () at ./linklet.c:1384
#24 0x005a0963 in ts__scheme_tail_apply_from_native (rator=0xb7590600, argc=3, argv=0xb74a6e6c) at ./jitcall.c:232
#25 0xb7fc0b67 in ?? ()
#26 0xb7caf3e4 in ?? ()
#27 0xb7cc3b24 in ?? ()
#28 0xb7cc2df4 in ?? ()
#29 0xb7fb85a4 in ?? ()
#30 0x00437b62 in scheme_do_eval (obj=0x0, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2513
#31 0x00438849 in _scheme_apply_multi_from_native (rator=<optimized out>, argc=1, argv=0xbfffe814) at ./schnapp.inc:100
#32 0x005a179b in ts__scheme_apply_multi_from_native (g178=0xb6e7bec4, g179=1, g180=0xbfffe814) at ./jit_ts.c:156
#33 0xb7fc0b06 in ?? ()
#34 0x00437b62 in scheme_do_eval (obj=0x0, num_rands=<optimized out>, rands=0x0, get_value=<optimized out>) at ./eval.c:2513
#35 0x004457b7 in apply_k () at ./fun.c:1502
#36 0x0044d1b8 in scheme_top_level_do_worker (k=0x445760 <apply_k>, eb=<optimized out>, new_thread=<optimized out>) at ./fun.c:1314
#37 0x00424186 in finish_cmd_line_run (fa=0xb6970318, repl=0x422f30 <do_scheme_rep>) at ./cmdline.inc:323
#38 0x0042570c in run_from_cmd_line (mk_basic_env=<optimized out>, cont_run=0x424670 <cont_run>, _argv=<optimized out>, argc=<optimized out>) at ./cmdline.inc:1368
#39 main_after_stack (data=0xbfffec74) at ./main.c:431
#40 0x0053b843 in do_main_stack_setup (data=0xbfffec74, _main=0x4246e0 <main_after_stack>, no_auto_statics=<optimized out>) at ./salloc.c:203
#41 scheme_main_stack_setup (no_auto_statics=<optimized out>, _main=<optimized out>, data=<optimized out>) at ./salloc.c:337
#42 0x00422dc6 in main_after_dlls (argv=0xbfffed34, argc=7) at ./main.c:366
#43 main (argc=7, argv=0xbfffed34) at ./main.c:326
@pmatos
Copy link
Collaborator

pmatos commented Nov 21, 2019

@remexre thanks for the report. Can you please try by passing --disable-generations to configure and report back?

@remexre
Copy link
Author

remexre commented Nov 21, 2019

It looks like I get the same result, including a very similar backtrace.

@remexre
Copy link
Author

remexre commented Nov 21, 2019

Doing disas on the stack trace, looks like it crashes on pxor (%esp), %xmm0 when %esp = 0xbfffdb9c -- does Racket not keep the stack 16-byte aligned? Or is the real fault with https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40838 ?

@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

OK, I will try to reproduce.

@pmatos pmatos self-assigned this Nov 22, 2019
@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

@remexre I can build this under emulation inside a debian chroot with gcc 7.4.
Logs are here:
https://gitlab.com/racket/racket/-/jobs/356919983/raw

A few more questions:

  • Are you building this natively on a 32 bit machine?
  • Can you show me you /proc/cpuinfo?
  • I am assuming you did something before make cstartup. Can you post full build logs pls?

@remexre
Copy link
Author

remexre commented Nov 22, 2019

It's a native 32-bit machine, yeah.

cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 14
model name	: Genuine Intel(R) CPU           T2400  @ 1.83GHz
stepping	: 8
microcode	: 0x39
cpu MHz		: 997.418
cache size	: 2048 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fdiv_bug	: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts cpuid aperfmperf pni monitor vmx est tm2 xtpr pdcm pti dtherm
bugs		: cpu_meltdown spectre_v1 spectre_v2 l1tf mds swapgs
bogomips	: 3657.20
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 32 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 14
model name	: Genuine Intel(R) CPU           T2400  @ 1.83GHz
stepping	: 8
microcode	: 0x39
cpu MHz		: 997.418
cache size	: 2048 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fdiv_bug	: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts cpuid aperfmperf pni monitor vmx est tm2 xtpr pdcm pti dtherm
bugs		: cpu_meltdown spectre_v1 spectre_v2 l1tf mds swapgs
bogomips	: 3657.20
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 32 bits virtual
power management:
build log
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
=== 3m generational GC disabled
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking for ar... yes
checking for cos in -lm... yes
checking for dlopen in -ldl... yes
checking for strip... strip
checking for strip -S... yes
checking for inline keyword... yes
checking for noinline attribute... yes
checking for GNU preprocessor... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking iconv is usable... yes
checking for mmap and mprotect... yes
checking for large page size... no
checking for __builtin_popcount... yes
checking for __builtin_clz... yes
Large-file support: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
checking size of char... 1
checking size of short... 2
checking size of int... 4
checking size of long... 4
checking size of long long... 8
checking size of void *... 4
checking size of bool... 1
checking for intptr_t... yes
checking for uintptr_t... yes
checking for stack direction... down
checking whether byte ordering is bigendian... no
checking for compare-and-swap... yes
checking whether pthread_rwlock is available... yes
checking for powl for extflonums... yes
checking for libffi... yes
Using installed libffi
cfg-racket: creating ./config.status
config.status: creating Makefile
config.status: creating racket/Makefile
config.status: creating racket/src/Makefile
config.status: creating racket/dynsrc/Makefile
config.status: creating racket/gc/Makefile
config.status: creating racket/sgc/Makefile
config.status: creating racket/gc2/Makefile
config.status: creating foreign/Makefile
config.status: creating gracket/Makefile
config.status: creating gracket/gc2/Makefile
config.status: creating racket/mzconfig.h
=== configuring in rktio (/home/nathan/Downloads/racket-7.5/src/rktio)
cfg-racket: running /bin/sh ./configure --disable-option-checking '--prefix=/home/nathan/.custom-racket'  '--enable-portable-binary' 'AR_FLAGS=rc' '--enable-pthread' '--enable-iconv' --cache-file=/dev/null --srcdir=.
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for ranlib... ranlib
checking for ar... yes
checking for fmod in -lm... yes
checking for dlopen in -ldl... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for intptr_t... yes
checking for uintptr_t... yes
checking whether byte ordering is bigendian... no
checking for getaddrinfo... yes
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking iconv is usable... yes
checking for nl_langinfo (CODESET)... yes
checking for mbsrtowcs... yes
checking for poll... yes
checking for epoll... yes
checking for inotify... yes
Large-file support: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
configure: creating ./config.status
config.status: creating Makefile
config.status: creating rktio_config.h
>>> Installation targets:
 executables        : ${exec_prefix}/bin/...
 core docs          : ${datarootdir}/doc/${PACKAGE}/...
 C libraries        : ${exec_prefix}/lib/...
 C headers          : ${prefix}/include/${PACKAGE}/...
 platform libraries : ${exec_prefix}/lib/${PACKAGE}/...
 common libraries   : ${datarootdir}/${PACKAGE}/...
 base collections   : ${exec_prefix}/share/${PACKAGE}/collects/...
 configuration      : ${prefix}/etc/${PACKAGE}/...
 .desktop files     : ${exec_prefix}/share/applications/...
 man pages          : ${datarootdir}/man/...
     where prefix = /home/nathan/.custom-racket
  and datarootdir = ${prefix}/share
  and exec_prefix = ${prefix}
  and PACKAGE = racket
make 3m
make[1]: Entering directory '/home/nathan/Downloads/racket-7.5/src'
make no-local-racket
make[2]: Entering directory '/home/nathan/Downloads/racket-7.5/src'
:
make[2]: Leaving directory '/home/nathan/Downloads/racket-7.5/src'
cd racket; make 3m
make[2]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cgc
make[3]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cgc-core
make[4]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make common
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make g-c
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd sgc; make ../libmzgc.a 
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/sgc'
gcc -Wall   -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC -DSGC_EXPORTS -I.. -c ./sgc.c -o sgc.o
make gcobjects
make[8]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/sgc'
make[8]: Nothing to be done for 'gcobjects'.
make[8]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/sgc'
ar rc ../libmzgc.a sgc.o
ranlib ../libmzgc.a
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/sgc'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make foreign-stuff
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd ../foreign; make all
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/foreign'
make foreign.o
make[8]: Entering directory '/home/nathan/Downloads/racket-7.5/src/foreign'
gcc -Wall   -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I./../racket -I./../racket/include -I./../racket/src -I./../rktio -I./../rktio  -c ./foreign.c -o foreign.o
make[8]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/foreign'
make libffi_OFF
make[8]: Entering directory '/home/nathan/Downloads/racket-7.5/src/foreign'
:
make[8]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/foreign'
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/foreign'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make rktio
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd ../rktio; make
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/rktio'
make hide_standalone_librktio
make[8]: Entering directory '/home/nathan/Downloads/racket-7.5/src/rktio'
make librktio.a
make[9]: Entering directory '/home/nathan/Downloads/racket-7.5/src/rktio'
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_fs.o -c ./rktio_fs.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_fd.o -c ./rktio_fd.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_file.o -c ./rktio_file.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_poll_set.o -c ./rktio_poll_set.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_ltps.o -c ./rktio_ltps.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_sleep.o -c ./rktio_sleep.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_network.o -c ./rktio_network.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_pipe.o -c ./rktio_pipe.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_process.o -c ./rktio_process.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_signal.o -c ./rktio_signal.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_envvars.o -c ./rktio_envvars.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_fs_change.o -c ./rktio_fs_change.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_flock.o -c ./rktio_flock.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_shellex.o -c ./rktio_shellex.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_time.o -c ./rktio_time.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_cpu.o -c ./rktio_cpu.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_syslog.o -c ./rktio_syslog.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_convert.o -c ./rktio_convert.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_sha1.o -c ./rktio_sha1.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_sha2.o -c ./rktio_sha2.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_dll.o -c ./rktio_dll.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_error.o -c ./rktio_error.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_hash.o -c ./rktio_hash.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_wide.o -c ./rktio_wide.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_console.o -c ./rktio_console.c
gcc -g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -pthread -I. -I. -o rktio_main.o -c ./rktio_main.c
ar rc librktio.a rktio_fs.o rktio_fd.o rktio_file.o rktio_poll_set.o rktio_ltps.o rktio_sleep.o rktio_network.o rktio_pipe.o rktio_process.o rktio_signal.o rktio_envvars.o rktio_fs_change.o rktio_flock.o rktio_shellex.o rktio_time.o rktio_cpu.o rktio_syslog.o rktio_convert.o rktio_sha1.o rktio_sha2.o rktio_dll.o rktio_error.o rktio_hash.o rktio_wide.o rktio_console.o rktio_main.o
make[9]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/rktio'
make[8]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/rktio'
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/rktio'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make dynlib
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd dynsrc; make dynlib 
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
make ../mzdyn.o
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
gcc -fPIC -Wall  -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include  -I./.. -I./../include -I./../src  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./mzdyn.c -o ../mzdyn.o
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
make ../starter
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
gcc -Wall  -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include  -I./.. -I./../include -I./../src  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -o ../starter ./../../start/ustart.c
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/dynsrc'
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make mzlibrary
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd src; make all 
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make mzobjects
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./salloc.c -o salloc.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./bignum.c -o bignum.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./bool.c -o bool.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./char.c -o char.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./compenv.c -o compenv.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./compile.c -o compile.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./complex.c -o complex.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./dynext.c -o dynext.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./env.c -o env.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./error.c -o error.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./eval.c -o eval.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./file.c -o file.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./fun.c -o fun.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./future.c -o future.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./gmp/gmp.c -o gmp.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./hash.c -o hash.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jit.c -o jit.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitalloc.c -o jitalloc.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitarith.c -o jitarith.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitcall.c -o jitcall.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitcommon.c -o jitcommon.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitinline.c -o jitinline.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitprep.c -o jitprep.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitstack.c -o jitstack.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./jitstate.c -o jitstate.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./letrec_check.c -o letrec_check.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./linklet.c -o linklet.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./list.c -o list.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./marshal.c -o marshal.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./mzrt.c -o mzrt.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./network.c -o network.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./numarith.c -o numarith.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./number.c -o number.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./numcomp.c -o numcomp.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./numstr.c -o numstr.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./optimize.c -o optimize.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./place.c -o place.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./port.c -o port.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./portfun.c -o portfun.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./print.c -o print.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./rational.c -o rational.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./read.c -o read.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./regexp.c -o regexp.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./resolve.c -o resolve.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./sema.c -o sema.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./setjmpup.c -o setjmpup.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./sfs.c -o sfs.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./sort.c -o sort.o
echo '#include "startup.inc"' > ../cstartup.inc
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./startup.c -I.. -I. -o startup.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./string.c -I. -o string.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./struct.c -o struct.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./symbol.c -o symbol.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./syntax.c -o syntax.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./thread.c -o thread.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./type.c -o type.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./unwind/libunwind.c -o unwind.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./validate.c -o validate.o
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./vector.c -o vector.o
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make libracket.a
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
ar rc libracket.a src/*.o ../foreign/foreign.o   
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make racketcgc
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
gcc -I. -I./include -Wall    -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DINITIAL_COLLECTS_DIRECTORY='"'"`cd ./../../collects; pwd`"'"' -DINITIAL_CONFIG_DIRECTORY='"'"`cd ./../..; pwd`/etc"'"' -c ./main.c -o main.o
gcc -o racketcgc main.o  libracket.a libmzgc.a ../rktio/librktio.a  -pthread -ldl -lm  -ldl -lm -rdynamic -lffi  
echo racketcgc
racketcgc
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cstartup
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cstartup_`./racketcgc -cu ./src/startup-select.rkt`
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
./racketcgc -cu ./src/compile-startup.rkt cstartup.inc cstartup.zo ./src/startup.inc ./src/schvers.h
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make mzlibrary
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
cd src; make all 
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make mzobjects
make[7]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
gcc -Wall   -I./.. -I./../include  -I./../../rktio -I../../rktio -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c ./startup.c -I.. -I. -o startup.o
make[7]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket/src'
make libracket.a
make[6]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
ar rc libracket.a src/*.o ../foreign/foreign.o   
make[6]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make racketcgc
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
gcc -o racketcgc main.o  libracket.a libmzgc.a ../rktio/librktio.a  -pthread -ldl -lm  -ldl -lm -rdynamic -lffi  
echo racketcgc
racketcgc
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make mzcomcgc
make[5]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
:
make[5]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[4]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make sysinfercgc
make[4]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
./racketcgc -cqu ./mksystem.rkt system.rktd "gcc -E -I. -I./include -I./src -g -O2  -pthread -I/usr/lib/libffi-3.3_rc0/include   -DUSE_SENORA_GC   -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  ./src/systype.c" "" machine "./racketcgc" "./racketcgc"
make[4]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[3]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cstartup
make[3]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
make cstartup_`./racketcgc -cu ./src/startup-select.rkt`
make[4]: Entering directory '/home/nathan/Downloads/racket-7.5/src/racket'
./racketcgc -cu ./src/compile-startup.rkt cstartup.inc cstartup.zo ./src/startup.inc ./src/schvers.h
make[4]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[3]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[2]: Leaving directory '/home/nathan/Downloads/racket-7.5/src/racket'
make[1]: Leaving directory '/home/nathan/Downloads/racket-7.5/src'

@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

There was no error on the build above though, was there?

@remexre
Copy link
Author

remexre commented Nov 22, 2019

Oh, grr, looks like it didn't capture stderr; it segfaulted as before.

@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

ok - then, no problem. I have what I need. Thanks.

@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

I assume you are untarring the 7.5 tarball, cd src, and then ./configure --disable-generations && make ?

@remexre
Copy link
Author

remexre commented Nov 22, 2019

I'm also passing --prefix=$HOME/.custom-racket/ to configure, but otherwise yes.

@pmatos
Copy link
Collaborator

pmatos commented Nov 22, 2019

Thanks. I will need some more time to investigate. No problem is revealed in emulation. Maybe I can get my hands on a 32bit machine.

@remexre
Copy link
Author

remexre commented Nov 22, 2019

I suspect reproducing this relies on the options your glibc was compiled with -- it looks like a stack alignment thing to me.

@pmatos
Copy link
Collaborator

pmatos commented Nov 23, 2019

@remexre Have you compiled your glibc with any special options? This should be pretty standard accross distros unless you have done it yourself.

@mflatt
Copy link
Member

mflatt commented Nov 23, 2019

@remexre Although the stack is meant to be 16-byte aligned, it looks like there's one place where alignment is only enabled for Mac OS. Can you try changing line 420 of "src/racket/src/lightning/i386/core.h" from

# ifdef _CALL_DARWIN

to

# if 1

and see whether that helps?

@remexre
Copy link
Author

remexre commented Nov 24, 2019

I believe CFLAGS should be -fno-builtin-strlen -ggdb -fomit-frame-pointer -O2 -march=native -pipe; I'm on Gentoo, so it was compiled on my CPU with a distro-provided build script.

The change to lightning seems to have worked, though racket3m and racketcgc both have a multisecond time-to-repl; do you see a regression on your machine?

@samth
Copy link
Sponsor Member

samth commented Nov 24, 2019

@remexre If you run raco setup racket first, do subsequent repl startups get faster?

@samth
Copy link
Sponsor Member

samth commented Nov 24, 2019

Or perhaps just completing make and then running make install.

@remexre
Copy link
Author

remexre commented Nov 24, 2019

That cut it down from ~10sec to ~3

@samth
Copy link
Sponsor Member

samth commented Nov 24, 2019

Depending on which one you did, a full raco setup may reduce the time further.

Also, what's the time for racket -l racket/base?

@remexre
Copy link
Author

remexre commented Nov 24, 2019

After the raco setup, 0.700 total.

@samth
Copy link
Sponsor Member

samth commented Nov 24, 2019

That's a time that seems within the realm of possibility for a slow machine (I get 0.277).

@remexre
Copy link
Author

remexre commented Nov 24, 2019

Okay, this works to my satisfaction; should I close this, or is there some code change that should be landed (eg a configure option for alignment)

pmatos referenced this issue Nov 24, 2019
Fix function-call setup to align the stack to a 16-byte boundary on
all platforms.
@pmatos
Copy link
Collaborator

pmatos commented Nov 24, 2019

I think this might be fixed by c611f12
Re-assigning to @mflatt

Still don't understand why this was not causing problems in other x86 configurations. Any ideas?

@pmatos pmatos assigned mflatt and unassigned pmatos Nov 24, 2019
@remexre
Copy link
Author

remexre commented Nov 24, 2019

No clue, but it'd be plausible to me that Ubuntu, Debian, Fedora, etc. compile their libc with unaligned stacks to prevent issues with software unaware of the ABI change.

@pmatos
Copy link
Collaborator

pmatos commented Nov 25, 2019

@remexre you're on the money here.
From arch build pkgs: https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/glibc

  export CC="gcc -m32 -mstackrealign"
  export CXX="g++ -m32 -mstackrealign"

This is slightly unfortunate to say the least. @mflatt will close this one when he sees fit.
@remexre thank you for your time and patience with this one.

@mflatt
Copy link
Member

mflatt commented Nov 25, 2019

Yes, c611f12 was meant to close the issue, but I forgot to mention the issue number in the commit. I'll close this issue now.

@mflatt mflatt closed this as completed Nov 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants