Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill a deadlock in the new thread creation code I've introduced (sometimes, the main...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 16 Mar 2007 14:08:48 +0000 (14:08 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 16 Mar 2007 14:08:48 +0000 (14:08 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3300 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/context.c

index b24922a..0cfcb36 100644 (file)
@@ -187,13 +187,13 @@ __context_wrapper(void* c) {
         
        DEBUG2("**[%p:%p]** Lock ****",context,(void*)xbt_thread_self());
        xbt_mutex_lock(creation_mutex);
+       xbt_mutex_lock(context->mutex);
        
        DEBUG2("**[%p:%p]** Releasing the creator ****",context,(void*)xbt_thread_self());
        xbt_thcond_signal(creation_cond);
        xbt_mutex_unlock(creation_mutex);
        
        DEBUG2("**[%p:%p]** Going to Jail ****",context,(void*)xbt_thread_self());
-       xbt_mutex_lock(context->mutex);
        xbt_thcond_wait(context->cond, context->mutex);
        
        DEBUG2("**[%p:%p]** Unlocking ****",context,(void*)xbt_thread_self());