# Logfile created on 2023-02-09 16:15:49 +0000 by logger.rb/v1.4.3 #<BuildRuby:0x000055b8f830dfe8 @REPOSITORY="https://github.com/ruby/ruby.git", @REPOSITORY_TYPE=:git, @git_branch=nil, @git_worktree=nil, @svn_revision=nil, @SRC_DIR="/tmp/ruby/src", @BUILD_DIR="/tmp/ruby/build", @INSTALL_DIR="/tmp/ruby/install", @TARGET_NAME="trunk-repeat20", @TARGET_SRC_DIR="/tmp/ruby/src/trunk-repeat20", @TARGET_BUILD_DIR="/tmp/ruby/build/trunk-repeat20", @TARGET_INSTALL_DIR="/tmp/ruby/install/trunk-repeat20", @configure_opts=["--enable-shared"], @build_opts="-j4", @btest_opts="-j4", @test_opts="TESTS=--repeat-count=20", @incremental=true, @steps=["checkout", "autoconf", "configure", "build_up", "build_miniruby", "build_ruby", "build_all", "build_install", "test_btest", "test_basic", "test_all", "test_rubyspec"], @quiet=false, @gist=false, @timeout=41600, @logfile="/home/ko1/ruby/logs/brlog.trunk-repeat20.20230209-161549", @ruby_env=[["RUBY_DEBUG", "ci"]], @make="make", @logger=#<Logger:0x000055b8f83a3430 @level=0, @progname=nil, @default_formatter=#<Logger::Formatter:0x000055b8f83a32f0 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x000055b8f83a3110 @shift_period_suffix="%Y%m%d", @shift_size=1048576, @shift_age=0, @filename="/home/ko1/ruby/logs/brlog.trunk-repeat20.20230209-161549", @dev=#<File:/home/ko1/ruby/logs/brlog.trunk-repeat20.20230209-161549>, @binmode=false, @mon_data=#<Monitor:0x000055b8f83a3048>, @mon_data_owner_object_id=860>>> $$$[beg] make update-unicode -j4 make: Nothing to be done for 'update-unicode'. $$$[end] "make update-unicode -j4" exit with 0. $$$[beg] make update-download -j4 tool/config.guess already exists tool/config.sub already exists $$$[end] "make update-download -j4" exit with 0. $$$[beg] make update-rubyspec -j4 make: Nothing to be done for 'update-rubyspec'. $$$[end] "make update-rubyspec -j4" exit with 0. $$$[beg] make update-src -j4 From https://github.com/ruby/ruby 8edd350..381bdee master -> origin/master Updating 8edd350..381bdee Fast-forward bootstraptest/test_yjit.rb | 32 +++++++++ common.mk | 21 +----- compile.c | 2 +- cont.c | 2 +- debug.c | 2 +- eval.c | 2 +- ext/coverage/coverage.c | 2 +- ext/coverage/depend | 1 - ext/objspace/depend | 7 +- ext/objspace/object_tracing.c | 2 +- ext/objspace/objspace.c | 2 +- ext/objspace/objspace_dump.c | 2 +- gc.c | 1 - gc.h | 147 ----------------------------------------- hash.c | 2 +- internal/gc.h | 139 ++++++++++++++++++++++++++++++++++++++ iseq.c | 2 +- mjit.c | 2 +- proc.c | 2 +- ractor.c | 2 +- range.c | 6 +- shape.c | 2 +- string.c | 1 - symbol.c | 1 - test/irb/test_context.rb | 13 ++-- test/ruby/test_range.rb | 40 +++++++++++ thread.c | 2 +- thread_pthread.c | 2 +- transient_heap.c | 1 - vm.c | 2 +- vm_dump.c | 2 +- vm_sync.c | 2 +- yjit.c | 2 +- yjit/src/asm/mod.rs | 78 ++++++++++++++-------- yjit/src/codegen.rs | 33 +++++---- yjit/src/cruby_bindings.inc.rs | 2 +- yjit/src/stats.rs | 3 + yjit/src/virtualmem.rs | 13 ++++ 38 files changed, 329 insertions(+), 250 deletions(-) delete mode 100644 gc.h Latest commit hash = 381bdee118 $$$[end] "make update-src -j4" exit with 0. $$$[beg] make after-update -j4 sed 's/{\$([^(){}]*)[^{}]*}//g' /tmp/ruby/src/trunk-repeat20/common.mk > uncommon.mk generating /tmp/ruby/src/trunk-repeat20/ext/ripper/ripper.c generating /tmp/ruby/src/trunk-repeat20/ext/rbconfig/sizeof/limits.c make[1]: Entering directory '/tmp/ruby/src/trunk-repeat20/ext/ripper' make[1]: Nothing to be done for 'src'. make[1]: Leaving directory '/tmp/ruby/src/trunk-repeat20/ext/ripper' make[1]: Entering directory '/tmp/ruby/src/trunk-repeat20/ext/rbconfig/sizeof' make[1]: Entering directory '/tmp/ruby/src/trunk-repeat20/ext/socket' make[1]: Nothing to be done for 'srcs'. make[1]: Leaving directory '/tmp/ruby/src/trunk-repeat20/ext/socket' make[1]: 'limits.c' is up to date. make[1]: Leaving directory '/tmp/ruby/src/trunk-repeat20/ext/rbconfig/sizeof' make[1]: Entering directory '/tmp/ruby/src/trunk-repeat20/ext/etc' make[1]: 'constdefs.h' is up to date. make[1]: Leaving directory '/tmp/ruby/src/trunk-repeat20/ext/etc' /tmp/ruby/src/trunk-repeat20/revision.h updated generating x86_64-linux-fake.rb x86_64-linux-fake.rb updated /bin/sh /tmp/ruby/src/trunk-repeat20/tool/ifchange "--timestamp=.rbconfig.time" rbconfig.rb rbconfig.tmp rbconfig.rb unchanged generating enc.mk making srcs under enc make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Nothing to be done for 'srcs'. make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' $$$[end] "make after-update -j4" exit with 0. $$$[beg] make miniruby -j4 BASERUBY = /usr/bin/ruby --disable=gems CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wundef -fPIC XCFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I/tmp/ruby/src/trunk-repeat20/include -I/tmp/ruby/src/trunk-repeat20 -I/tmp/ruby/src/trunk-repeat20/enc/unicode/15.0.0 CPPFLAGS = DLDFLAGS = -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.3.3 -fstack-protector-strong SOLIBS = -lz -lrt -lrt -lgmp -ldl -lcrypt -lm -lpthread LANG = LC_ALL = LC_CTYPE = MFLAGS = -j4 --jobserver-auth=4,5 RUSTC = rustc YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C overflow-checks=on '--out-dir=/tmp/ruby/build/trunk-repeat20/yjit/target/release/' /tmp/ruby/src/trunk-repeat20/yjit/src/lib.rs gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. compiling /tmp/ruby/src/trunk-repeat20/miniinit.c compiling /tmp/ruby/src/trunk-repeat20/array.c compiling /tmp/ruby/src/trunk-repeat20/ast.c compiling /tmp/ruby/src/trunk-repeat20/bignum.c compiling /tmp/ruby/src/trunk-repeat20/class.c compiling /tmp/ruby/src/trunk-repeat20/compile.c compiling /tmp/ruby/src/trunk-repeat20/complex.c compiling /tmp/ruby/src/trunk-repeat20/cont.c compiling /tmp/ruby/src/trunk-repeat20/debug.c compiling /tmp/ruby/src/trunk-repeat20/dir.c compiling /tmp/ruby/src/trunk-repeat20/encoding.c compiling /tmp/ruby/src/trunk-repeat20/enum.c compiling /tmp/ruby/src/trunk-repeat20/enumerator.c compiling /tmp/ruby/src/trunk-repeat20/error.c compiling /tmp/ruby/src/trunk-repeat20/eval.c compiling /tmp/ruby/src/trunk-repeat20/file.c compiling /tmp/ruby/src/trunk-repeat20/gc.c compiling /tmp/ruby/src/trunk-repeat20/hash.c compiling /tmp/ruby/src/trunk-repeat20/io.c compiling /tmp/ruby/src/trunk-repeat20/iseq.c compiling /tmp/ruby/src/trunk-repeat20/load.c compiling /tmp/ruby/src/trunk-repeat20/marshal.c compiling /tmp/ruby/src/trunk-repeat20/math.c compiling /tmp/ruby/src/trunk-repeat20/memory_view.c compiling /tmp/ruby/src/trunk-repeat20/mjit.c compiling /tmp/ruby/src/trunk-repeat20/mjit_c.c compiling /tmp/ruby/src/trunk-repeat20/node.c compiling /tmp/ruby/src/trunk-repeat20/numeric.c compiling /tmp/ruby/src/trunk-repeat20/object.c compiling /tmp/ruby/src/trunk-repeat20/pack.c compiling parse.c compiling /tmp/ruby/src/trunk-repeat20/proc.c compiling /tmp/ruby/src/trunk-repeat20/process.c compiling /tmp/ruby/src/trunk-repeat20/ractor.c compiling /tmp/ruby/src/trunk-repeat20/random.c compiling /tmp/ruby/src/trunk-repeat20/range.c compiling /tmp/ruby/src/trunk-repeat20/rational.c compiling /tmp/ruby/src/trunk-repeat20/re.c compiling /tmp/ruby/src/trunk-repeat20/ruby.c compiling /tmp/ruby/src/trunk-repeat20/scheduler.c compiling /tmp/ruby/src/trunk-repeat20/shape.c compiling /tmp/ruby/src/trunk-repeat20/signal.c compiling /tmp/ruby/src/trunk-repeat20/sprintf.c compiling /tmp/ruby/src/trunk-repeat20/string.c compiling /tmp/ruby/src/trunk-repeat20/struct.c compiling /tmp/ruby/src/trunk-repeat20/symbol.c compiling /tmp/ruby/src/trunk-repeat20/thread.c compiling /tmp/ruby/src/trunk-repeat20/time.c compiling /tmp/ruby/src/trunk-repeat20/transcode.c compiling /tmp/ruby/src/trunk-repeat20/transient_heap.c compiling /tmp/ruby/src/trunk-repeat20/variable.c compiling /tmp/ruby/src/trunk-repeat20/version.c compiling /tmp/ruby/src/trunk-repeat20/vm.c compiling /tmp/ruby/src/trunk-repeat20/vm_backtrace.c compiling /tmp/ruby/src/trunk-repeat20/vm_dump.c compiling /tmp/ruby/src/trunk-repeat20/vm_sync.c compiling /tmp/ruby/src/trunk-repeat20/vm_trace.c compiling /tmp/ruby/src/trunk-repeat20/yjit.c building Rust YJIT (release mode) touch yjit/target/release/libyjit.a partial linking yjit/target/release/libyjit.a into yjit/target/release/libyjit.o linking miniruby $$$[end] "make miniruby -j4" exit with 0. $$$[beg] make ruby -j4 BASERUBY = /usr/bin/ruby --disable=gems CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wundef -fPIC XCFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I/tmp/ruby/src/trunk-repeat20/include -I/tmp/ruby/src/trunk-repeat20 -I/tmp/ruby/src/trunk-repeat20/enc/unicode/15.0.0 CPPFLAGS = DLDFLAGS = -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.3.3 -fstack-protector-strong SOLIBS = -lz -lrt -lrt -lgmp -ldl -lcrypt -lm -lpthread LANG = LC_ALL = LC_CTYPE = MFLAGS = -j4 --jobserver-auth=4,5 RUSTC = rustc YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C overflow-checks=on '--out-dir=/tmp/ruby/build/trunk-repeat20/yjit/target/release/' /tmp/ruby/src/trunk-repeat20/yjit/src/lib.rs gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. creating verconf.h verconf.h updated compiling /tmp/ruby/src/trunk-repeat20/loadpath.c builtin_binary.inc updated compiling /tmp/ruby/src/trunk-repeat20/builtin.c linking static-library libruby-static.a linking shared-library libruby.so.3.3.0 linking ruby $$$[end] "make ruby -j4" exit with 0. $$$[beg] make all -j4 BASERUBY = /usr/bin/ruby --disable=gems CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wundef -fPIC XCFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I/tmp/ruby/src/trunk-repeat20/include -I/tmp/ruby/src/trunk-repeat20 -I/tmp/ruby/src/trunk-repeat20/enc/unicode/15.0.0 CPPFLAGS = DLDFLAGS = -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.3.3 -fstack-protector-strong SOLIBS = -lz -lrt -lrt -lgmp -ldl -lcrypt -lm -lpthread LANG = LC_ALL = LC_CTYPE = MFLAGS = -j4 --jobserver-auth=4,5 RUSTC = rustc YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C overflow-checks=on '--out-dir=/tmp/ruby/build/trunk-repeat20/yjit/target/release/' /tmp/ruby/src/trunk-repeat20/yjit/src/lib.rs gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. generating encdb.h generating enc.mk building spec/ruby/optional/capi/ext/array_spec.so building spec/ruby/optional/capi/ext/basic_object_spec.so encdb.h unchanged building spec/ruby/optional/capi/ext/bignum_spec.so building spec/ruby/optional/capi/ext/binding_spec.so building spec/ruby/optional/capi/ext/boolean_spec.so building spec/ruby/optional/capi/ext/class_id_under_autoload_spec.so building spec/ruby/optional/capi/ext/class_spec.so building spec/ruby/optional/capi/ext/class_under_autoload_spec.so building spec/ruby/optional/capi/ext/complex_spec.so building spec/ruby/optional/capi/ext/constants_spec.so building spec/ruby/optional/capi/ext/data_spec.so building spec/ruby/optional/capi/ext/debug_spec.so building spec/ruby/optional/capi/ext/encoding_spec.so building spec/ruby/optional/capi/ext/enumerator_spec.so building spec/ruby/optional/capi/ext/exception_spec.so building spec/ruby/optional/capi/ext/fiber_spec.so building spec/ruby/optional/capi/ext/file_spec.so building spec/ruby/optional/capi/ext/fixnum_spec.so building spec/ruby/optional/capi/ext/float_spec.so building spec/ruby/optional/capi/ext/gc_spec.so building spec/ruby/optional/capi/ext/globals_spec.so building spec/ruby/optional/capi/ext/hash_spec.so building spec/ruby/optional/capi/ext/integer_spec.so building spec/ruby/optional/capi/ext/io_spec.so building spec/ruby/optional/capi/ext/kernel_spec.so building spec/ruby/optional/capi/ext/language_spec.so building spec/ruby/optional/capi/ext/marshal_spec.so building spec/ruby/optional/capi/ext/module_spec.so building spec/ruby/optional/capi/ext/module_under_autoload_spec.so building spec/ruby/optional/capi/ext/mutex_spec.so building spec/ruby/optional/capi/ext/numeric_spec.so building spec/ruby/optional/capi/ext/object_spec.so building spec/ruby/optional/capi/ext/proc_spec.so building spec/ruby/optional/capi/ext/range_spec.so building spec/ruby/optional/capi/ext/rational_spec.so building spec/ruby/optional/capi/ext/rbasic_spec.so building spec/ruby/optional/capi/ext/regexp_spec.so building spec/ruby/optional/capi/ext/st_spec.so building spec/ruby/optional/capi/ext/string_spec.so building spec/ruby/optional/capi/ext/struct_spec.so building spec/ruby/optional/capi/ext/symbol_spec.so building spec/ruby/optional/capi/ext/thread_spec.so building spec/ruby/optional/capi/ext/time_spec.so building spec/ruby/optional/capi/ext/tracepoint_spec.so building spec/ruby/optional/capi/ext/typed_data_spec.so building spec/ruby/optional/capi/ext/util_spec.so making enc building rb_mjit_header.h make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Nothing to be done for 'enc'. make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' making srcs under enc make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Nothing to be done for 'srcs'. make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' generating transdb.h rb_mjit_header.h updated building .ext/include/x86_64-linux/rb_mjit_min_header-3.3.0.h transdb.h unchanged generating makefiles ext/configure-ext.mk making trans ext/configure-ext.mk unchanged make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Nothing to be done for '/tmp/ruby/src/trunk-repeat20/enc/trans'. make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' making encs make[1]: Entering directory '/tmp/ruby/build/trunk-repeat20' make[1]: Nothing to be done for 'encs'. make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' make[2]: Entering directory '/tmp/ruby/build/trunk-repeat20/ext/-test-/rational' compiling /tmp/ruby/src/trunk-repeat20/ext/-test-/rational/rat.c linking shared-object -test-/rational.so make[2]: Entering directory '/tmp/ruby/build/trunk-repeat20/ext/bigdecimal' make[2]: Leaving directory '/tmp/ruby/build/trunk-repeat20/ext/bigdecimal' make[2]: Entering directory '/tmp/ruby/build/trunk-repeat20/ext/coverage' make[2]: Leaving directory '/tmp/ruby/build/trunk-repeat20/ext/coverage' make[2]: *** No rule to make target '/tmp/ruby/src/trunk-repeat20/gc.h', needed by 'coverage.o'. Stop. make[1]: *** [exts.mk:231: ext/coverage/all] Error 2 make[1]: *** Waiting for unfinished jobs.... make[2]: Entering directory '/tmp/ruby/build/trunk-repeat20/ext/date' make[2]: Leaving directory '/tmp/ruby/build/trunk-repeat20/ext/date' make[2]: Leaving directory '/tmp/ruby/build/trunk-repeat20/ext/-test-/rational' make[1]: Leaving directory '/tmp/ruby/build/trunk-repeat20' make: *** [uncommon.mk:327: build-ext] Error 2 make: *** Waiting for unfinished jobs.... transform_mjit_header: making external definition static inline: rb_vm_lvar_exposed, Init_vm_stack_canary, rb_vm_opt_cfunc_p, rb_vm_ic_hit_p, rb_vm_opt_newarray_min, rb_vm_opt_newarray_max, rb_vm_splat_array, rb_vm_concat_array, rb_vm_defined, rb_vm_yield_with_cfunc, rb_vm_cc_general, rb_aliased_callable_method_entry, rb_find_defined_class_by_owner, rb_vm_call_ivar_attrset_p, rb_iseq_only_kwparam_p, rb_iseq_only_optparam_p, rb_vm_setinstancevariable, rb_vm_setclassvariable, rb_vm_getclassvariable, rb_vm_get_ev_const, rb_vm_rewrite_cref, rb_vm_get_cref, rb_vm_push_frame_fname, rb_vm_pop_frame_no_int, rb_vm_block_ep_update, rb_vm_cref_new_toplevel, rb_vm_cref_dup_without_refinements, rb_vm_frame_block_handler, rb_vm_cframe_keyword_p, rb_vm_ep_local_ep transform_mjit_header: making declaration static inline: rb_vm_lvar_exposed, rb_vm_lvar_exposed, Init_vm_stack_canary, rb_vm_rewrite_cref, rb_vm_pop_frame_no_int, rb_vm_frame_block_handler, rb_vm_block_ep_update, rb_vm_ep_local_ep, rb_vm_push_frame_fname transform_mjit_header: SKIPPED to transform: getlogin_r, pread64, pread, read, bsearch, fread_unlocked, fgets_unlocked, fread, fgets, vdprintf, dprintf, vfprintf, vprintf, printf, fprintf, getline, putchar_unlocked, putc_unlocked, fputc_unlocked, putchar, getchar_unlocked, getc_unlocked, fgetc_unlocked, getchar $$$[end] "make all -j4" exit with 512.