| Commit message (Expand) | Author | Age | Files | Lines |
| * | overhaul cancellation to fix resource leaks and dangerous behavior with signals•••this commit addresses two issues:
1. a race condition, whereby a cancellation request occurring after a
syscall returned from kernelspace but before the subsequent
CANCELPT_END would cause cancellable resource-allocating syscalls
(like open) to leak resources.
2. signal handlers invoked while the thread was blocked at a
cancellation point behaved as if asynchronous cancellation mode wer in
effect, resulting in potentially dangerous state corruption if a
cancellation request occurs.
the glibc/nptl implementation of threads shares both of these issues.
with this commit, both are fixed. however, cancellation points
encountered in a signal handler will not be acted upon if the signal
was received while the thread was already at a cancellation point.
they will of course be acted upon after the signal handler returns, so
in real-world usage where signal handlers quickly return, it should
not be a problem. it's possible to solve this problem too by having
sigaction() wrap all signal handlers with a function that uses a
pthread_cleanup handler to catch cancellation, patch up the saved
context, and return into the cancellable function that will catch and
act upon the cancellation. however that would be a lot of complexity
for minimal if any benefit...
| Rich Felker | 2011-03-24 | 2 | -2/+14 |
| * | global cleanup to use the new syscall interface | Rich Felker | 2011-03-20 | 5 | -7/+7 |
| * | make fork properly initialize the main thread in the child process | Rich Felker | 2011-03-09 | 1 | -0/+7 |
| * | implement fexecve | Rich Felker | 2011-02-27 | 1 | -0/+10 |
| * | add pthread_atfork interface•••note that this presently does not handle consistency of the libc's own
global state during forking. as per POSIX 2008, if the parent process
was threaded, the child process may only call async-signal-safe
functions until one of the exec-family functions is called, so the
current behavior is believed to be conformant even if non-ideal. it
may be improved at some later time.
| Rich Felker | 2011-02-18 | 1 | -3/+6 |
| * | initial check-in, version 0.5.0 | Rich Felker | 2011-02-12 | 12 | -0/+194 |