Do not allocate memory in the segmentation fault signal handler #14327
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.
The
String.new(UInt8*)
call insideException::CallStack.decode_frame
could allocate memory, potentially triggering a GC cycle or expanding the GC heap, which could break the stack trace:This seems to happen on master since #14257, and also to #14047 with Crystal 1.10.1. This PR removes this allocation so that
Crystal::System::Signal.@@segfault_handler
should be allocation-free. (TechnicallyFiber.current
could eventually callThread.new
, but this should be extremely rare.)