From 1bff4c4aa3caab353f2b4121456efde822cad955 Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 23 Mar 2010 21:48:35 +0000 Subject: [PATCH] add a dangerous MSG_task_ref() needed by lua to not free tasks twice when they get release by the GC git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7336 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/msg/msg.h | 1 + src/msg/gos.c | 5 +++-- src/simix/private.h | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/msg/msg.h b/include/msg/msg.h index 409a59d46b..33c7a59ad1 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -112,6 +112,7 @@ XBT_PUBLIC(m_host_t) MSG_task_get_source(m_task_t task); XBT_PUBLIC(const char *) MSG_task_get_name(m_task_t task); XBT_PUBLIC(MSG_error_t) MSG_task_cancel(m_task_t task); XBT_PUBLIC(MSG_error_t) MSG_task_destroy(m_task_t task); +XBT_PUBLIC(void) MSG_task_ref(m_task_t t); XBT_PUBLIC(MSG_error_t) MSG_task_get(m_task_t * task, m_channel_t channel); XBT_PUBLIC(MSG_error_t) MSG_task_get_with_timeout(m_task_t * task, diff --git a/src/msg/gos.c b/src/msg/gos.c index 321bfef6fa..4a999fe6e0 100644 --- a/src/msg/gos.c +++ b/src/msg/gos.c @@ -44,8 +44,9 @@ MSG_error_t MSG_task_execute(m_task_t task) CHECK_HOST(); simdata = task->simdata; - xbt_assert1((!simdata->compute) - && (task->simdata->refcount == 1), + + xbt_assert1((!simdata->compute), + //&& (task->simdata->refcount == 1), FIXME: since lua bindings play with this refcount to make sure that tasks don't get gc() twice, this field cannot be used here as is anymore "This task is executed somewhere else. Go fix your code! %d", task->simdata->refcount); DEBUG1("Computing on %s", MSG_process_self()->simdata->m_host->name); diff --git a/src/simix/private.h b/src/simix/private.h index f8012e58c8..65e93e92c2 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -246,7 +246,6 @@ void SIMIX_ctx_thread_factory_init(smx_context_factory_t * factory); void SIMIX_ctx_sysv_factory_init(smx_context_factory_t * factory); void SIMIX_ctx_lua_factory_init(smx_context_factory_t * factory); -void SIMIX_ctx_lua_factory_set_state(void *state); void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory); -- 2.20.1