runtime: g0 stack.lo is sometimes too low #26061
Labels
compiler/runtime
Issues related to the Go compiler and/or runtime.
NeedsFix
The path to resolution is known, but the work has not been done.
Milestone
In cgo mode for UNIX platforms, we compute the g0 stack bounds by querying the stack size from
pthread_get_stacksize
, subtracting that from the current SP inmstart
, and adding a 1k buffer. However, on my Linux laptop, over 4k of the stack has already been consumed by the time we reachmstart
, so the runtime sets the bottom of the g0 stack to be below the mapped memory. As a result, if we actually overflow the g0 stack, we get a segfault instead of a useful message with a traceback.We should use
pthread_get_stack
instead to get both stack bounds.Discovered when writing a test of overflowing the g0 stack for #21382, which I had assumed would pass on linux/amd64 but didn't.
The text was updated successfully, but these errors were encountered: