Yes, there are cases that will fail if the runtime is compiled without
optimization. The Go compiler and runtime cooperate to ensure that
there is a certain amount of stack space available at all times.
Certain parts of the runtime can't copy the stack for various reasons
(these functions are marked with "//go:nosplit" in the runtime Go code
and with NOSPLIT in the runtime assembly code). Those parts of the
runtime are constrained to run within the amount of stack space that
is always available. When the runtime is compiled without
optimization, functions use more stack space, and in some cases there
are sequences of nosplit function calls that run over the amount of
stack space they have available.
Ian