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

Bug#596990: doubly unlocking?



Hi, Alex.

Just for some hint.
break_pthread.cpp has a doubly unlocking path in worker() function. 
You can eliminate it like this:

--- /tmp/break_pthreads.cpp     2010-10-15 17:27:26.362761567 +0900
+++ /tmp/break_pthreads2.cpp    2010-10-15 17:27:51.576094901 +0900
@@ -46,8 +46,8 @@
         toDo.pop_back();
         workgot++;
       }
+      pthread_mutex_unlock(&work_lock);
     }
-    pthread_mutex_unlock(&work_lock);
     for (unsigned int i = 0; i < workgot; i++)
     {
       finishWork(workingOn[i]);

Although I don't know whether aborting is a 'bug' or not, at least 
with my host on rebuilt 2.11.2-6 glibc, this was the point.
If your program has same flow, you might avoid problem.

-- 
OHKUMA Tadayoshi / tad@omoikane.co.jp
CEO & Engineering Consultant
Omoikane Inc. / http://www.omoikane.co.jp/



Reply to: