diff --git a/gc.c b/gc.c index 0afba4f22c52a0..4fbd74afb820a3 100644 --- a/gc.c +++ b/gc.c @@ -5435,6 +5435,7 @@ rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func) fprintf(stderr, " %s\n", func, file, line, rb_raw_obj_info(buff, 0x100, obj)); } +RBIMPL_ATTR_NOINLINE() void rb_gc_before_fork(void) { diff --git a/gc/default/default.c b/gc/default/default.c index 6c2b13c9f37d0b..d5a1525b66f374 100644 --- a/gc/default/default.c +++ b/gc/default/default.c @@ -9407,6 +9407,8 @@ rb_gc_impl_before_fork(void *objspace_ptr) { rb_objspace_t *objspace = objspace_ptr; + gc_rest(objspace); + objspace->fork_vm_lock_lev = RB_GC_VM_LOCK(); rb_gc_vm_barrier(); }