Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Also display the pid on backtraces
[simgrid.git] / src / gras / Msg / rpc.c
index 01dd282..14e774b 100644 (file)
@@ -110,26 +110,26 @@ void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx,
                    &received);
   free(ctx);
   if (received.kind == e_gras_msg_kind_rpcerror) {
-    /* Damn. Got an exception. Extract it and revive it */
     xbt_ex_t e;
     memcpy(&e,received.payl,received.payl_size);
     free(received.payl);
-    VERB3("Raise a remote exception cat:%d comming from %s %s",
-         e.category, e.host,
-         (__xbt_ex_ctx()->ctx_caught?"caught":"not caught"));
+    VERB3("Raise a remote exception cat:%d comming from %s (%s)",
+         e.category, e.host, e.msg);
      __xbt_ex_ctx()->ctx_ex.msg      = e.msg;
      __xbt_ex_ctx()->ctx_ex.category = e.category;
      __xbt_ex_ctx()->ctx_ex.value    = e.value;
      __xbt_ex_ctx()->ctx_ex.remote   = 1;
      __xbt_ex_ctx()->ctx_ex.host     = e.host;
      __xbt_ex_ctx()->ctx_ex.procname = e.procname;
+     __xbt_ex_ctx()->ctx_ex.pid      = e.pid;
      __xbt_ex_ctx()->ctx_ex.file     = e.file;
      __xbt_ex_ctx()->ctx_ex.line     = e.line;
      __xbt_ex_ctx()->ctx_ex.func     = e.func;
      __xbt_ex_ctx()->ctx_ex.used     = e.used;
      __xbt_ex_ctx()->ctx_ex.bt_strings = e.bt_strings;
+     memset(&__xbt_ex_ctx()->ctx_ex.bt,0,
+           sizeof(__xbt_ex_ctx()->ctx_ex.bt));
     DO_THROW(__xbt_ex_ctx()->ctx_ex);
-
   }
   memcpy(answer,received.payl,received.payl_size);
   free(received.payl);
@@ -155,6 +155,7 @@ void gras_msg_rpccall(gras_socket_t server,
  */
 
 void gras_msg_rpcreturn(double timeOut,gras_msg_cb_ctx_t ctx,void *answer) {
-  gras_msg_send_ext(ctx->expeditor, e_gras_msg_kind_rpcanswer, ctx->ID, ctx->msgtype, answer);
+  gras_msg_send_ext(ctx->expeditor, e_gras_msg_kind_rpcanswer, 
+                   ctx->ID, ctx->msgtype, answer);
 }