Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Try to fix the finalization process of ruby simulations. THE REST WORKS, yuhu
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 5 Mar 2010 09:24:19 +0000 (09:24 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 5 Mar 2010 09:24:19 +0000 (09:24 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7202 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/bindings/ruby/simgrid.rb
src/msg/m_process.c
src/simix/smx_context_ruby.c

index 9bd954b..67c7e1c 100644 (file)
@@ -117,8 +117,9 @@ class MSG::Process < Thread
     @schedBegin.acquire()
     MSG::debug("Let's execute the main() of the Ruby process")
     main(@pargs)
-#     processExit(self) # Exit the Native Process
     @schedEnd.release()
+    MSG::debug("Released my schedEnd, bailing out")
+    processExit(self) # Exit the Native Process
   end
     
 
index c2cab1b..2af1ec4 100644 (file)
@@ -36,10 +36,14 @@ void __MSG_process_cleanup(void *arg)
   m_process_t proc = ((smx_process_t) arg)->data;
   xbt_fifo_remove(msg_global->process_list, proc);
   SIMIX_process_cleanup(arg);
-  free(proc->name);
-  proc->name = NULL;
-  free(proc->simdata);
-  proc->simdata = NULL;
+  if (proc->name) {
+    free(proc->name);
+    proc->name = NULL;
+  }
+  if (proc->simdata) {
+    free(proc->simdata);
+    proc->simdata = NULL;
+  }
   free(proc);
 
   return;
index a580cb3..4f1cb3b 100644 (file)
@@ -89,9 +89,11 @@ static void smx_ctx_ruby_free(smx_context_t context) {
   free(context);
   context = NULL; 
   }*/
-  DEBUG1("smx_ctx_ruby_free_context(%s)",context->argv[0]);
-  free (context);
-  context = NULL;
+  if (context) {
+    DEBUG1("smx_ctx_ruby_free_context(%p)",context);
+    free (context);
+    context = NULL;
+  }
 }
 
 static void smx_ctx_ruby_start(smx_context_t context) {
@@ -102,7 +104,7 @@ static void smx_ctx_ruby_start(smx_context_t context) {
 }
 
 static void smx_ctx_ruby_stop(smx_context_t context) {
-  DEBUG1("smx_ctx_ruby_stop(%s)",context->argv[0]);
+  DEBUG0("smx_ctx_ruby_stop()");
 
   VALUE process = Qnil;
   smx_ctx_ruby_t ctx_ruby,current;
@@ -128,7 +130,6 @@ static void smx_ctx_ruby_stop(smx_context_t context) {
     process = ctx_ruby->process;
     ctx_ruby->process = Qnil;
   }
-  DEBUG1("smx_ctx_ruby_stop(%s)...Done",context->argv[0]);
 }
 
 static void smx_ctx_ruby_suspend(smx_context_t context) {