From 9019e629679ec12c1a4c9656bab337e84f861e8c Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Fri, 8 Nov 2013 14:28:26 +0100 Subject: libports: fix the thread counts in case the thread creation fails Previously the number of total threads and the number of unused threads was wrong if at one point the creation of a thread failed. Fix this by decrementing both counters that were previously optimistically incremented. Adjust the comment accordingly. * libports/manage-multithread.c (ports_manage_port_operations_multithread): Fix the thread counts in case the thread creation fails. --- libports/manage-multithread.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libports/manage-multithread.c') diff --git a/libports/manage-multithread.c b/libports/manage-multithread.c index 60f4c19d..0c2da005 100644 --- a/libports/manage-multithread.c +++ b/libports/manage-multithread.c @@ -140,9 +140,13 @@ ports_manage_port_operations_multithread (struct port_bucket *bucket, pthread_detach (pthread_id); else { - /* XXX The number of threads should be adjusted but the code - and design of the Hurd servers just don't handle thread - creation failure. */ + pthread_spin_lock (&lock); + totalthreads--; + nreqthreads--; + pthread_spin_unlock (&lock); + /* There is not much we can do at this point. The code + and design of the Hurd servers just don't handle + thread creation failure. */ errno = err; perror ("pthread_create"); } -- cgit v1.2.3