diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-11-26 21:01:49 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-11-26 21:01:49 +0100 |
commit | 5f25b24d6c6170cc366d9b71f99d741c4cfbc857 (patch) | |
tree | 38617ca12d24aa4f895948ad5fe26b1069776221 /devnode/devnode.c | |
parent | 9e419ee8f47028e8f58c456b6456c348f7f0bcfa (diff) | |
download | hurd-5f25b24d6c6170cc366d9b71f99d741c4cfbc857.tar.gz hurd-5f25b24d6c6170cc366d9b71f99d741c4cfbc857.tar.bz2 hurd-5f25b24d6c6170cc366d9b71f99d741c4cfbc857.zip |
libports: Force threads to wake up periodically
Quiescence support in port-deref-deferred.c assumes that all threads will
sooner or later go through a quiescent state (because it finished processing
a message). But that is not true: proc doesn't set a thread timeout, and
thus some threads can stay indefinitely stuck in receiving messages. And
thus the deferred dereferencing used by ports_destroy_right never gets
achieved. This accumulation can be seen by running:
while true ; do echo $(echo -n $(echo a)) > /dev/null ; done
while running vminfo 4 | wc -l in parallel.
Making threads get out of mach_msg at least periodically allows
unstucking quiescence generations.
Diffstat (limited to 'devnode/devnode.c')
0 files changed, 0 insertions, 0 deletions