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)