diff options
author | tjr <tjr@FreeBSD.org> | 2003-11-10 07:22:41 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2003-11-10 07:22:41 +0000 |
commit | 3fb83070b6fcc3fabeb295c2d502f70adba9573e (patch) | |
tree | 4cdf6b9d8d468aa257f8486e7c4620bcc0ea1697 /gnu/usr.bin/man/manpath | |
parent | 2322554b505db97ea0be0318e61ed0a8d71c0add (diff) | |
download | FreeBSD-src-3fb83070b6fcc3fabeb295c2d502f70adba9573e.zip FreeBSD-src-3fb83070b6fcc3fabeb295c2d502f70adba9573e.tar.gz |
When there are no free sem_undo structs available in semu_alloc(), only
free one sem_undo with un_cnt == 0 instead of all of them. This is a
temporary workaround until the SLIST_FOREACH_PREVPTR loop gets fixed so
that it doesn't cause cycles in semu_list when removing multiple adjacent
items. It might be easier to just use (doubly-linked) LISTs here instead
of complicated SLIST code to achieve O(1) removals.
This bug manifested itself as a complete lockup under heavy semaphore use
by multiple processes with the SEM_UNDO flag set.
PR: 58984
Diffstat (limited to 'gnu/usr.bin/man/manpath')
0 files changed, 0 insertions, 0 deletions