#
188483 |
|
11-Feb-2009 |
rwatson |
Add a regresion test to determine whether or not a file descriptor is allocated in a fork(2)-inheritable way at the beginning or end of an accept(2) system call. This test creates a test thread and blocks it in accept(2), then forks a child process which tests to see if the next available file descriptor is defined or not (EBADF vs EINVAL for ftruncate(2)).
This detects a regression introduced during the network stack locking work, in which a very narrow race during which fork(2) from one thread during accept(2) in a second thread lead to an extra inherited file descriptor turned into a very wide race ensuring that a descriptor was leaked into the child even though it hadn't been returned.
PR: kern/130348
|