From fa09acafde3b7dbb23edadc6eddcce27f7395880 Mon Sep 17 00:00:00 2001 From: "Urabe, Shyouhei" Date: Wed, 24 Apr 2019 18:22:33 +0900 Subject: [PATCH] extend machine stacks when sanitizers are there It seems sanitizers require extra amount of machine stacks. Without extending them the process tends to stack overflow. --- vm_core.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vm_core.h b/vm_core.h index 2c38911d58..95cd2d87d9 100644 --- a/vm_core.h +++ b/vm_core.h @@ -698,6 +698,18 @@ typedef struct rb_vm_struct { #define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */ #endif +#if __has_feature(memory_sanitizer) || __has_feature(address_sanitizer) +/* It seems sanitizers consume A LOT of machine stacks */ +#undef RUBY_VM_THREAD_MACHINE_STACK_SIZE +#define RUBY_VM_THREAD_MACHINE_STACK_SIZE (1024 * 1024 * sizeof(VALUE)) +#undef RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN +#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 512 * 1024 * sizeof(VALUE)) +#undef RUBY_VM_FIBER_MACHINE_STACK_SIZE +#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 256 * 1024 * sizeof(VALUE)) +#undef RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN +#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 128 * 1024 * sizeof(VALUE)) +#endif + /* optimize insn */ #define INTEGER_REDEFINED_OP_FLAG (1 << 0) #define FLOAT_REDEFINED_OP_FLAG (1 << 1)