Dynamically allocate the stack since SIGSTKSZ is not constant since glibc 2.34. Backported from: https://github.com/openjdk/jdk17u/commit/bb7c412e259893091210267252faf3c0a1be0969 diff --git a/hotspot/test/runtime/StackGuardPages/exeinvoke.c b/hotspot/test/runtime/StackGuardPages/exeinvoke.c --- a/hotspot/test/runtime/StackGuardPages/exeinvoke.c +++ b/hotspot/test/runtime/StackGuardPages/exeinvoke.c @@ -67,8 +67,17 @@ static void handler(int sig, siginfo_t *si, void *unused) { longjmp(context, 1); } +static char* altstack = NULL; + void set_signal_handler() { - static char altstack[SIGSTKSZ]; + if (altstack == NULL) { + // Dynamically allocated in case SIGSTKSZ is not constant + altstack = malloc(SIGSTKSZ); + if (altstack == NULL) { + fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n"); + exit(7); + } + } stack_t ss = { .ss_size = SIGSTKSZ,