Delete pending task in SimGrid -
i have process worker
launches executor
. executor
process creates 10-sec task , executes it. after 2 sec worker kills executor
process. simgrid gives me log after killing executor
:
[ 2.000000] (0:maestro@) dp_objs: 1 pending task?
how should destroy tasks , task_data
when process kill working process?
int worker(int argc, char *argv[]) { msg_process_t x = msg_process_create("", executor, null, msg_host_self()); msg_process_sleep(2); msg_process_kill(x); } int executor(){ msg_process_on_exit(my_onexit, null); task = msg_task_create("", 1e10, 10, null); msg_task_execute(task); return 0; } int my_onexit() { msg_task_cancel(task); xbt_info("exiting (done sleeping or got killed)."); return 0; }
upd: declared global variable msg_task_t task
.
now when run code have:
[ 2.000000] (0:maestro@) oops ! deadlock or code not clean. [ 2.000000] (0:maestro@) 1 processes still running, waiting something. [ 2.000000] (0:maestro@) legend of following listing: "process <pid> (<name>@<host>): <status>" [ 2.000000] (0:maestro@) process 2 (@worker2) process finished exit code 134 (interrupted signal 6: sigabrt)
i expected simgrid show xbt_info
message, didn't , interrupted sigabrt
error.
you should msg_task_cancel()
task want "kill". in function registered in msg_process_on_exit()
callback.
Comments
Post a Comment