haiku/headers
Niels Sascha Reedijk 331889d067 Kernel/Threads: remove limit on number of dead threads in a team
When a thread is created, it is expected that some other thread (usually the
creating thread) will want to make sure it completes. This is done using the
pthread_join() or wait_for_thread() calls.

It is possible that threads end before another thread waits for its completion.
That's why there is a dead thread list for each team, which holds thread ids
and their exit status so that a call to pthread_join() or wait_for_thread() in
the future can complete succesfully.

The dead thread list was limited to 32 threads per team. If there would be
more, the oldest thread would be kicked off. This could cause issues in
situations where a team would create more than 32 threads, and would start
waiting for their result after they have finished. Some of the calls would fail
because the threads would no longer be in the dead list.

This specifically caused problems for cargo (the Rust package manager), which
could depending on the number of dependencies, could create more than 32
threads. See: https://github.com/nielx/rust/issues/3

This change removes the limit of dead threads within a team. Note that there is
a risk that a badly written program that does not detach or joins its threads
can make this an endless list, but the impact is relatively small (dead threads
only occupy a bit of kernel memory).

Change-Id: I0135dd54e10ee48a529f23228d21237d4f1a74e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3178
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-09-01 21:04:46 +00:00
..
build Build fix. 2020-07-14 19:33:20 +02:00
compatibility headers: Add exp10 declarations to gnu/math.h. 2020-07-07 20:48:58 -04:00
config ARM64: Initial changes so we can compile GCC toolchain 2019-08-30 19:05:16 +00:00
cpp build fix. 2015-11-12 22:24:16 +01:00
glibc Make public glibc header printf.h usable. 2013-07-17 18:07:56 +02:00
libs agg: fix build. 2020-01-22 19:25:16 +01:00
os locale kit: allow creating a catalog without entry_ref 2020-09-01 18:14:57 +00:00
posix m68k: really add fenv from musl-1.1.24 2020-08-19 15:23:47 +00:00
private Kernel/Threads: remove limit on number of dead threads in a team 2020-09-01 21:04:46 +00:00
tools Fix #12799: Enable elf symbol patching for Haiku 2016-10-30 10:42:24 +01:00