This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

What can a signal handler do with SIGSTKSZ?


In the continuing series of "What can X do with Y?" [1]

I would like to get consensus on what a signal handler can do with
SIGSTKSZ amount of space.

I propose the following:
~~~
The implementation only guarantees that a signal handler can
manipulate a reasonable amount of local variables (no more than
2 KiB worth), and can read and write to memory, carry out atomic
operations, and call simple C library functions that do similar
memory and simple string operations e.g. memcpy, memset, strcmp,
strcpy. The amount of signal stack allocated for SIGSTKSZ is not
sufficient to call complex signal-safe functions e.g. fork, _exit,
abort, nor any that can be canceled (requires enough stack for
cancellation). Any other operations or function calls in the
signal handler should be evaluated for runtime stack usage and
additional stack beyond SIGSTKSZ should be allocated.
~~~

Thoughts?

-- 
Cheers,
Carlos.

[1] "What can a thread do with PTHREAD_STACK_MIN?"
https://sourceware.org/ml/libc-alpha/2017-12/msg00751.html


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]