Paul Eggert wrote: > Thanks, that looks good except please change "create nested functions" > to "create and then use nested functions", as it's OK to for a > stack-overflow handler to create a nested function without using it.
Yup. I had a thinko there. > Should a similar restriction be documented for libsigsegv, or is that > library immune to this problem? Right, it will need to be documented for libsigsegv as well. 2021-05-24 Bruno Haible <br...@clisp.org> c-stack: Document another restriction. Triggered by a discussion with Paul Eggert. * lib/c-stack.h: Mention that ACTION should not use nested functions. diff --git a/lib/c-stack.h b/lib/c-stack.h index 56d74f1..a9a8b13 100644 --- a/lib/c-stack.h +++ b/lib/c-stack.h @@ -33,10 +33,15 @@ A null ACTION acts like an action that does nothing. - ACTION must be async-signal-safe. ACTION together with its callees - must not require more than 64 KiB of stack space. Also, - ACTION should not call longjmp, because this implementation does - not guarantee that it is safe to return to the original stack. + Restrictions: + - ACTION must be async-signal-safe. + - ACTION together with its callees must not require more than 64 KiB of + stack space. + - ACTION must not create and then invoke nested functions + <https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html>, because + this implementation does not guarantee an executable stack. + - ACTION should not call longjmp, because this implementation does not + guarantee that it is safe to return to the original stack. This function may install a handler for the SIGSEGV signal or for the SIGBUS signal or exercise other system dependent exception handling APIs. */