- e.host = (char*)gras_os_myname();
-#ifdef HAVE_EXECINFO_H
- e.bt_strings = backtrace_symbols (e.bt, e.used);
-#endif
- gras_msg_send_ext(msg.expe, e_gras_msg_kind_rpcerror , msg.ID, msg.type, &e);
- e.host = NULL;
- INFO2("RPC callback raised an exception, which were propagated back to %s:%d",
- gras_socket_peer_name(msg.expe), gras_socket_peer_port(msg.expe));
+ if (!e.remote) { /* the exception is born on this machine */
+ e.host = (char*)gras_os_myname();
+ xbt_ex_setup_backtrace(&e);
+ }
+ VERB4("Propagate %s exception from '%s' RPC cb back to %s:%d",
+ (e.remote ? "remote" : "local"),
+ msg.type->name,
+ gras_socket_peer_name(msg.expe),
+ gras_socket_peer_port(msg.expe));
+ gras_msg_send_ext(msg.expe, e_gras_msg_kind_rpcerror,
+ msg.ID, msg.type, &e);