Increase zend.reserved_stack_size minimum value in ASAN/MSAN builds #11073
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
zend.reserved_stack_size
is the size of the stack space that is reserved for native code called by the VM. This reserved space is similar to the shadow space described in https://pangin.pro/posts/stack-overflow-handling.The minimum and default value of
zend.reserved_stack_size
is ZEND_ALLOCA_MAX_SIZE + some empirically chosen value. If this is too low, the program may crash as if no stack limit was in place.ASAN/MSAN builds use considerably more stack space due to instrumentation, so this default value is too low in these builds. https://clang.llvm.org/docs/AddressSanitizer.html#limitations mentions an increase of up to 3x, but the stack usage of individual functions can increase much more than that. For example, here is a stack trace annotated with stack usage of each function as reported by -fstack-usage:
In this PR I increase the minimum and default value of
zend.reserved_stack_size
by 10x in ASAN/MSAN builds.