bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] libports: fix the thread counts in case the thread creation fail


From: Justus Winter
Subject: [PATCH] libports: fix the thread counts in case the thread creation fails
Date: Sat, 9 Nov 2013 14:21:09 +0100

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(-)

diff --git a/libports/manage-multithread.c b/libports/manage-multithread.c
index 4003cfb..c73305d 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");
            }
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]