From 3c67cbdbcd451a8059eba237a886c19faa0f4ebe Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 5 Mar 2010 09:24:19 +0000 Subject: [PATCH] Try to fix the finalization process of ruby simulations. THE REST WORKS, yuhu git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7202 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/bindings/ruby/simgrid.rb | 3 ++- src/msg/m_process.c | 12 ++++++++---- src/simix/smx_context_ruby.c | 11 ++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/bindings/ruby/simgrid.rb b/src/bindings/ruby/simgrid.rb index 9bd954bc86..67c7e1ccd3 100644 --- a/src/bindings/ruby/simgrid.rb +++ b/src/bindings/ruby/simgrid.rb @@ -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 diff --git a/src/msg/m_process.c b/src/msg/m_process.c index c2cab1b011..2af1ec4173 100644 --- a/src/msg/m_process.c +++ b/src/msg/m_process.c @@ -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; diff --git a/src/simix/smx_context_ruby.c b/src/simix/smx_context_ruby.c index a580cb38ad..4f1cb3b5b3 100644 --- a/src/simix/smx_context_ruby.c +++ b/src/simix/smx_context_ruby.c @@ -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) { -- 2.20.1