From: Frederic Suter Date: Thu, 7 Mar 2019 14:10:14 +0000 (+0100) Subject: Split the behavior of ActorImpl::create X-Git-Tag: v3_22~154 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/558acbe23fca1cd940f2cdd70530e71963be372c Split the behavior of ActorImpl::create follow the init->set->start logic --- diff --git a/examples/deprecated/msg/platform-failures/platform-failures.tesh b/examples/deprecated/msg/platform-failures/platform-failures.tesh index 6aa6f0b402..9c64e17672 100644 --- a/examples/deprecated/msg/platform-failures/platform-failures.tesh +++ b/examples/deprecated/msg/platform-failures/platform-failures.tesh @@ -12,100 +12,100 @@ $ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:criti > [ 0.010309] (2:worker@Tremblay) Start execution... > [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0 > [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1 -> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3 -> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 0.000000] (5:worker@Ginette) Waiting a message on worker-3 +> [ 0.000000] (6:worker@Bourassa) Waiting a message on worker-4 > [ 0.010309] (1:master@Tremblay) Send a message to worker-1 > [ 1.000000] (0:maestro@) Restart processes on host Fafard -> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2 +> [ 1.000000] (7:worker@Fafard) Waiting a message on worker-2 > [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going! > [ 1.000000] (1:master@Tremblay) Send a message to worker-2 > [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going! -> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! +> [ 2.000000] (7:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (0:maestro@) Restart processes on host Jupiter > [ 2.000000] (1:master@Tremblay) Send a message to worker-3 -> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 2.000000] (8:worker@Jupiter) Waiting a message on worker-1 > [ 2.010309] (2:worker@Tremblay) Execution complete. > [ 2.010309] (2:worker@Tremblay) Waiting a message on worker-0 > [ 3.030928] (1:master@Tremblay) Send to worker-3 completed > [ 3.030928] (1:master@Tremblay) Send a message to worker-4 -> [ 3.030928] (4:worker@Ginette) Start execution... +> [ 3.030928] (5:worker@Ginette) Start execution... > [ 4.061856] (1:master@Tremblay) Send to worker-4 completed > [ 4.061856] (1:master@Tremblay) Send a message to worker-0 -> [ 4.061856] (5:worker@Bourassa) Start execution... +> [ 4.061856] (6:worker@Bourassa) Start execution... > [ 4.072165] (1:master@Tremblay) Send to worker-0 completed > [ 4.072165] (1:master@Tremblay) Send a message to worker-1 > [ 4.072165] (2:worker@Tremblay) Start execution... -> [ 5.030928] (4:worker@Ginette) Execution complete. -> [ 5.030928] (4:worker@Ginette) Waiting a message on worker-3 +> [ 5.030928] (5:worker@Ginette) Execution complete. +> [ 5.030928] (5:worker@Ginette) Waiting a message on worker-3 > [ 5.103093] (1:master@Tremblay) Send to worker-1 completed > [ 5.103093] (1:master@Tremblay) Send a message to worker-2 -> [ 5.103093] (7:worker@Jupiter) Start execution... -> [ 6.061856] (5:worker@Bourassa) Execution complete. -> [ 6.061856] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 5.103093] (8:worker@Jupiter) Start execution... +> [ 6.061856] (6:worker@Bourassa) Execution complete. +> [ 6.061856] (6:worker@Bourassa) Waiting a message on worker-4 > [ 6.072165] (2:worker@Tremblay) Execution complete. > [ 6.072165] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 7.103093] (7:worker@Jupiter) Execution complete. -> [ 7.103093] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 7.103093] (8:worker@Jupiter) Execution complete. +> [ 7.103093] (8:worker@Jupiter) Waiting a message on worker-1 > [ 15.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 15.103093] (1:master@Tremblay) Send a message to worker-3 > [ 15.103093] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going! > [ 15.103093] (1:master@Tremblay) Send a message to worker-4 -> [ 15.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 15.103093] (4:worker@Ginette) Waiting a message on worker-3 +> [ 15.103093] (5:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 15.103093] (5:worker@Ginette) Waiting a message on worker-3 > [ 16.134021] (1:master@Tremblay) Send to worker-4 completed > [ 16.134021] (1:master@Tremblay) Send a message to worker-0 -> [ 16.134021] (5:worker@Bourassa) Start execution... +> [ 16.134021] (6:worker@Bourassa) Start execution... > [ 16.144330] (1:master@Tremblay) Send to worker-0 completed > [ 16.144330] (1:master@Tremblay) Send a message to worker-1 > [ 16.144330] (2:worker@Tremblay) Start execution... > [ 17.175258] (1:master@Tremblay) Send to worker-1 completed > [ 17.175258] (1:master@Tremblay) Send a message to worker-2 -> [ 17.175258] (7:worker@Jupiter) Start execution... -> [ 18.134021] (5:worker@Bourassa) Execution complete. -> [ 18.134021] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 17.175258] (8:worker@Jupiter) Start execution... +> [ 18.134021] (6:worker@Bourassa) Execution complete. +> [ 18.134021] (6:worker@Bourassa) Waiting a message on worker-4 > [ 18.144330] (2:worker@Tremblay) Execution complete. > [ 18.144330] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 19.175258] (7:worker@Jupiter) Execution complete. -> [ 19.175258] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 19.175258] (8:worker@Jupiter) Execution complete. +> [ 19.175258] (8:worker@Jupiter) Waiting a message on worker-1 > [ 27.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 27.175258] (1:master@Tremblay) Send a message to worker-3 > [ 28.206186] (1:master@Tremblay) Send to worker-3 completed > [ 28.206186] (1:master@Tremblay) Send a message to worker-4 > [ 28.206186] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going! > [ 28.206186] (1:master@Tremblay) Send a message to worker-0 -> [ 28.206186] (4:worker@Ginette) Start execution... -> [ 28.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 28.206186] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 28.206186] (5:worker@Ginette) Start execution... +> [ 28.206186] (6:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 28.206186] (6:worker@Bourassa) Waiting a message on worker-4 > [ 28.216495] (1:master@Tremblay) Send to worker-0 completed > [ 28.216495] (1:master@Tremblay) Send a message to worker-1 > [ 28.216495] (2:worker@Tremblay) Start execution... > [ 29.247423] (1:master@Tremblay) Send to worker-1 completed > [ 29.247423] (1:master@Tremblay) Send a message to worker-2 -> [ 29.247423] (7:worker@Jupiter) Start execution... -> [ 30.206186] (4:worker@Ginette) Execution complete. -> [ 30.206186] (4:worker@Ginette) Waiting a message on worker-3 +> [ 29.247423] (8:worker@Jupiter) Start execution... +> [ 30.206186] (5:worker@Ginette) Execution complete. +> [ 30.206186] (5:worker@Ginette) Waiting a message on worker-3 > [ 30.216495] (2:worker@Tremblay) Execution complete. > [ 30.216495] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 31.247423] (7:worker@Jupiter) Execution complete. -> [ 31.247423] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 31.247423] (8:worker@Jupiter) Execution complete. +> [ 31.247423] (8:worker@Jupiter) Waiting a message on worker-1 > [ 39.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 39.247423] (1:master@Tremblay) Send a message to worker-3 > [ 40.278351] (1:master@Tremblay) Send to worker-3 completed > [ 40.278351] (1:master@Tremblay) Send a message to worker-4 -> [ 40.278351] (4:worker@Ginette) Start execution... +> [ 40.278351] (5:worker@Ginette) Start execution... > [ 41.309278] (1:master@Tremblay) Send to worker-4 completed > [ 41.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over. > [ 41.309278] (2:worker@Tremblay) I'm done. See you! -> [ 41.309278] (5:worker@Bourassa) Start execution... -> [ 41.309278] (7:worker@Jupiter) I'm done. See you! +> [ 41.309278] (6:worker@Bourassa) Start execution... +> [ 41.309278] (8:worker@Jupiter) I'm done. See you! > [ 42.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 43.309278] (0:maestro@) Simulation time 43.3093 > [ 43.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going! > [ 43.309278] (1:master@Tremblay) Goodbye now! -> [ 43.309278] (5:worker@Bourassa) Execution complete. -> [ 43.309278] (5:worker@Bourassa) Waiting a message on worker-4 -> [ 43.309278] (5:worker@Bourassa) I'm done. See you! +> [ 43.309278] (6:worker@Bourassa) Execution complete. +> [ 43.309278] (6:worker@Bourassa) Waiting a message on worker-4 +> [ 43.309278] (6:worker@Bourassa) I'm done. See you! p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED @@ -117,100 +117,100 @@ $ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:criti > [ 0.000000] (1:master@Tremblay) Send a message to worker-0 > [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0 > [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1 -> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3 -> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 0.000000] (5:worker@Ginette) Waiting a message on worker-3 +> [ 0.000000] (6:worker@Bourassa) Waiting a message on worker-4 > [ 0.010825] (2:worker@Tremblay) Start execution... > [ 0.010825] (1:master@Tremblay) Send to worker-0 completed > [ 0.010825] (1:master@Tremblay) Send a message to worker-1 > [ 1.000000] (0:maestro@) Restart processes on host Fafard -> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2 +> [ 1.000000] (7:worker@Fafard) Waiting a message on worker-2 > [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going! > [ 1.000000] (1:master@Tremblay) Send a message to worker-2 > [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (0:maestro@) Restart processes on host Jupiter -> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 2.000000] (8:worker@Jupiter) Waiting a message on worker-1 > [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going! > [ 2.000000] (1:master@Tremblay) Send a message to worker-3 -> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! +> [ 2.000000] (7:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.010825] (2:worker@Tremblay) Execution complete. > [ 2.010825] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 3.082474] (4:worker@Ginette) Start execution... +> [ 3.082474] (5:worker@Ginette) Start execution... > [ 3.082474] (1:master@Tremblay) Send to worker-3 completed > [ 3.082474] (1:master@Tremblay) Send a message to worker-4 -> [ 4.164948] (5:worker@Bourassa) Start execution... +> [ 4.164948] (6:worker@Bourassa) Start execution... > [ 4.164948] (1:master@Tremblay) Send to worker-4 completed > [ 4.164948] (1:master@Tremblay) Send a message to worker-0 > [ 4.175773] (2:worker@Tremblay) Start execution... > [ 4.175773] (1:master@Tremblay) Send to worker-0 completed > [ 4.175773] (1:master@Tremblay) Send a message to worker-1 -> [ 5.082474] (4:worker@Ginette) Execution complete. -> [ 5.082474] (4:worker@Ginette) Waiting a message on worker-3 -> [ 5.258247] (7:worker@Jupiter) Start execution... +> [ 5.082474] (5:worker@Ginette) Execution complete. +> [ 5.082474] (5:worker@Ginette) Waiting a message on worker-3 +> [ 5.258247] (8:worker@Jupiter) Start execution... > [ 5.258247] (1:master@Tremblay) Send to worker-1 completed > [ 5.258247] (1:master@Tremblay) Send a message to worker-2 -> [ 6.164948] (5:worker@Bourassa) Execution complete. -> [ 6.164948] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 6.164948] (6:worker@Bourassa) Execution complete. +> [ 6.164948] (6:worker@Bourassa) Waiting a message on worker-4 > [ 6.175773] (2:worker@Tremblay) Execution complete. > [ 6.175773] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 7.258247] (7:worker@Jupiter) Execution complete. -> [ 7.258247] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 7.258247] (8:worker@Jupiter) Execution complete. +> [ 7.258247] (8:worker@Jupiter) Waiting a message on worker-1 > [ 15.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 15.258247] (1:master@Tremblay) Send a message to worker-3 -> [ 15.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 15.258247] (4:worker@Ginette) Waiting a message on worker-3 +> [ 15.258247] (5:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 15.258247] (5:worker@Ginette) Waiting a message on worker-3 > [ 15.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going! > [ 15.258247] (1:master@Tremblay) Send a message to worker-4 -> [ 16.340722] (5:worker@Bourassa) Start execution... +> [ 16.340722] (6:worker@Bourassa) Start execution... > [ 16.340722] (1:master@Tremblay) Send to worker-4 completed > [ 16.340722] (1:master@Tremblay) Send a message to worker-0 > [ 16.351546] (2:worker@Tremblay) Start execution... > [ 16.351546] (1:master@Tremblay) Send to worker-0 completed > [ 16.351546] (1:master@Tremblay) Send a message to worker-1 -> [ 17.434021] (7:worker@Jupiter) Start execution... +> [ 17.434021] (8:worker@Jupiter) Start execution... > [ 17.434021] (1:master@Tremblay) Send to worker-1 completed > [ 17.434021] (1:master@Tremblay) Send a message to worker-2 -> [ 18.340722] (5:worker@Bourassa) Execution complete. -> [ 18.340722] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 18.340722] (6:worker@Bourassa) Execution complete. +> [ 18.340722] (6:worker@Bourassa) Waiting a message on worker-4 > [ 18.351546] (2:worker@Tremblay) Execution complete. > [ 18.351546] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 19.434021] (7:worker@Jupiter) Execution complete. -> [ 19.434021] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 19.434021] (8:worker@Jupiter) Execution complete. +> [ 19.434021] (8:worker@Jupiter) Waiting a message on worker-1 > [ 27.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 27.434021] (1:master@Tremblay) Send a message to worker-3 -> [ 28.516495] (4:worker@Ginette) Start execution... +> [ 28.516495] (5:worker@Ginette) Start execution... > [ 28.516495] (1:master@Tremblay) Send to worker-3 completed > [ 28.516495] (1:master@Tremblay) Send a message to worker-4 -> [ 28.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 28.516495] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 28.516495] (6:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 28.516495] (6:worker@Bourassa) Waiting a message on worker-4 > [ 28.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going! > [ 28.516495] (1:master@Tremblay) Send a message to worker-0 > [ 28.527320] (2:worker@Tremblay) Start execution... > [ 28.527320] (1:master@Tremblay) Send to worker-0 completed > [ 28.527320] (1:master@Tremblay) Send a message to worker-1 -> [ 29.609794] (7:worker@Jupiter) Start execution... +> [ 29.609794] (8:worker@Jupiter) Start execution... > [ 29.609794] (1:master@Tremblay) Send to worker-1 completed > [ 29.609794] (1:master@Tremblay) Send a message to worker-2 -> [ 30.516495] (4:worker@Ginette) Execution complete. -> [ 30.516495] (4:worker@Ginette) Waiting a message on worker-3 +> [ 30.516495] (5:worker@Ginette) Execution complete. +> [ 30.516495] (5:worker@Ginette) Waiting a message on worker-3 > [ 30.527320] (2:worker@Tremblay) Execution complete. > [ 30.527320] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 31.609794] (7:worker@Jupiter) Execution complete. -> [ 31.609794] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 31.609794] (8:worker@Jupiter) Execution complete. +> [ 31.609794] (8:worker@Jupiter) Waiting a message on worker-1 > [ 39.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 39.609794] (1:master@Tremblay) Send a message to worker-3 -> [ 40.692268] (4:worker@Ginette) Start execution... +> [ 40.692268] (5:worker@Ginette) Start execution... > [ 40.692268] (1:master@Tremblay) Send to worker-3 completed > [ 40.692268] (1:master@Tremblay) Send a message to worker-4 -> [ 41.774742] (5:worker@Bourassa) Start execution... +> [ 41.774742] (6:worker@Bourassa) Start execution... > [ 41.774742] (1:master@Tremblay) Send to worker-4 completed > [ 41.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over. > [ 41.774742] (2:worker@Tremblay) I'm done. See you! -> [ 41.774742] (7:worker@Jupiter) I'm done. See you! +> [ 41.774742] (8:worker@Jupiter) I'm done. See you! > [ 42.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! -> [ 43.774742] (5:worker@Bourassa) Execution complete. -> [ 43.774742] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 43.774742] (6:worker@Bourassa) Execution complete. +> [ 43.774742] (6:worker@Bourassa) Waiting a message on worker-4 > [ 43.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going! -> [ 43.774742] (5:worker@Bourassa) I'm done. See you! +> [ 43.774742] (6:worker@Bourassa) I'm done. See you! > [ 43.774742] (1:master@Tremblay) Goodbye now! > [ 43.774742] (0:maestro@) Simulation time 43.7747 diff --git a/examples/s4u/platform-failures/s4u-platform-failures.tesh b/examples/s4u/platform-failures/s4u-platform-failures.tesh index ed8a8cfa98..9d30015e26 100644 --- a/examples/s4u/platform-failures/s4u-platform-failures.tesh +++ b/examples/s4u/platform-failures/s4u-platform-failures.tesh @@ -12,100 +12,100 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:c > [ 0.010309] (2:worker@Tremblay) Start execution... > [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0 > [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1 -> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3 -> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 0.000000] (5:worker@Ginette) Waiting a message on worker-3 +> [ 0.000000] (6:worker@Bourassa) Waiting a message on worker-4 > [ 0.010309] (1:master@Tremblay) Send a message to worker-1 > [ 1.000000] (0:maestro@) Restart processes on host Fafard -> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2 +> [ 1.000000] (7:worker@Fafard) Waiting a message on worker-2 > [ 1.000000] (1:master@Tremblay) Mmh. The communication with 'worker-1' failed. Nevermind. Let's keep going! > [ 1.000000] (1:master@Tremblay) Send a message to worker-2 > [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (1:master@Tremblay) Mmh. The communication with 'worker-2' failed. Nevermind. Let's keep going! -> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! +> [ 2.000000] (7:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (0:maestro@) Restart processes on host Jupiter > [ 2.000000] (1:master@Tremblay) Send a message to worker-3 -> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 2.000000] (8:worker@Jupiter) Waiting a message on worker-1 > [ 2.010309] (2:worker@Tremblay) Execution complete. > [ 2.010309] (2:worker@Tremblay) Waiting a message on worker-0 > [ 3.030928] (1:master@Tremblay) Send to worker-3 completed > [ 3.030928] (1:master@Tremblay) Send a message to worker-4 -> [ 3.030928] (4:worker@Ginette) Start execution... +> [ 3.030928] (5:worker@Ginette) Start execution... > [ 4.061856] (1:master@Tremblay) Send to worker-4 completed > [ 4.061856] (1:master@Tremblay) Send a message to worker-0 -> [ 4.061856] (5:worker@Bourassa) Start execution... +> [ 4.061856] (6:worker@Bourassa) Start execution... > [ 4.072165] (1:master@Tremblay) Send to worker-0 completed > [ 4.072165] (1:master@Tremblay) Send a message to worker-1 > [ 4.072165] (2:worker@Tremblay) Start execution... -> [ 5.030928] (4:worker@Ginette) Execution complete. -> [ 5.030928] (4:worker@Ginette) Waiting a message on worker-3 +> [ 5.030928] (5:worker@Ginette) Execution complete. +> [ 5.030928] (5:worker@Ginette) Waiting a message on worker-3 > [ 5.103093] (1:master@Tremblay) Send to worker-1 completed > [ 5.103093] (1:master@Tremblay) Send a message to worker-2 -> [ 5.103093] (7:worker@Jupiter) Start execution... -> [ 6.061856] (5:worker@Bourassa) Execution complete. -> [ 6.061856] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 5.103093] (8:worker@Jupiter) Start execution... +> [ 6.061856] (6:worker@Bourassa) Execution complete. +> [ 6.061856] (6:worker@Bourassa) Waiting a message on worker-4 > [ 6.072165] (2:worker@Tremblay) Execution complete. > [ 6.072165] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 7.103093] (7:worker@Jupiter) Execution complete. -> [ 7.103093] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 7.103093] (8:worker@Jupiter) Execution complete. +> [ 7.103093] (8:worker@Jupiter) Waiting a message on worker-1 > [ 15.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 15.103093] (1:master@Tremblay) Send a message to worker-3 > [ 15.103093] (1:master@Tremblay) Mmh. The communication with 'worker-3' failed. Nevermind. Let's keep going! > [ 15.103093] (1:master@Tremblay) Send a message to worker-4 -> [ 15.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 15.103093] (4:worker@Ginette) Waiting a message on worker-3 +> [ 15.103093] (5:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 15.103093] (5:worker@Ginette) Waiting a message on worker-3 > [ 16.134021] (1:master@Tremblay) Send to worker-4 completed > [ 16.134021] (1:master@Tremblay) Send a message to worker-0 -> [ 16.134021] (5:worker@Bourassa) Start execution... +> [ 16.134021] (6:worker@Bourassa) Start execution... > [ 16.144330] (1:master@Tremblay) Send to worker-0 completed > [ 16.144330] (1:master@Tremblay) Send a message to worker-1 > [ 16.144330] (2:worker@Tremblay) Start execution... > [ 17.175258] (1:master@Tremblay) Send to worker-1 completed > [ 17.175258] (1:master@Tremblay) Send a message to worker-2 -> [ 17.175258] (7:worker@Jupiter) Start execution... -> [ 18.134021] (5:worker@Bourassa) Execution complete. -> [ 18.134021] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 17.175258] (8:worker@Jupiter) Start execution... +> [ 18.134021] (6:worker@Bourassa) Execution complete. +> [ 18.134021] (6:worker@Bourassa) Waiting a message on worker-4 > [ 18.144330] (2:worker@Tremblay) Execution complete. > [ 18.144330] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 19.175258] (7:worker@Jupiter) Execution complete. -> [ 19.175258] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 19.175258] (8:worker@Jupiter) Execution complete. +> [ 19.175258] (8:worker@Jupiter) Waiting a message on worker-1 > [ 27.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 27.175258] (1:master@Tremblay) Send a message to worker-3 > [ 28.206186] (1:master@Tremblay) Send to worker-3 completed > [ 28.206186] (1:master@Tremblay) Send a message to worker-4 > [ 28.206186] (1:master@Tremblay) Mmh. The communication with 'worker-4' failed. Nevermind. Let's keep going! > [ 28.206186] (1:master@Tremblay) Send a message to worker-0 -> [ 28.206186] (4:worker@Ginette) Start execution... -> [ 28.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 28.206186] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 28.206186] (5:worker@Ginette) Start execution... +> [ 28.206186] (6:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 28.206186] (6:worker@Bourassa) Waiting a message on worker-4 > [ 28.216495] (1:master@Tremblay) Send to worker-0 completed > [ 28.216495] (1:master@Tremblay) Send a message to worker-1 > [ 28.216495] (2:worker@Tremblay) Start execution... > [ 29.247423] (1:master@Tremblay) Send to worker-1 completed > [ 29.247423] (1:master@Tremblay) Send a message to worker-2 -> [ 29.247423] (7:worker@Jupiter) Start execution... -> [ 30.206186] (4:worker@Ginette) Execution complete. -> [ 30.206186] (4:worker@Ginette) Waiting a message on worker-3 +> [ 29.247423] (8:worker@Jupiter) Start execution... +> [ 30.206186] (5:worker@Ginette) Execution complete. +> [ 30.206186] (5:worker@Ginette) Waiting a message on worker-3 > [ 30.216495] (2:worker@Tremblay) Execution complete. > [ 30.216495] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 31.247423] (7:worker@Jupiter) Execution complete. -> [ 31.247423] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 31.247423] (8:worker@Jupiter) Execution complete. +> [ 31.247423] (8:worker@Jupiter) Waiting a message on worker-1 > [ 39.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 39.247423] (1:master@Tremblay) Send a message to worker-3 > [ 40.278351] (1:master@Tremblay) Send to worker-3 completed > [ 40.278351] (1:master@Tremblay) Send a message to worker-4 -> [ 40.278351] (4:worker@Ginette) Start execution... +> [ 40.278351] (5:worker@Ginette) Start execution... > [ 41.309278] (1:master@Tremblay) Send to worker-4 completed > [ 41.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over. > [ 41.309278] (2:worker@Tremblay) I'm done. See you! -> [ 41.309278] (5:worker@Bourassa) Start execution... -> [ 41.309278] (7:worker@Jupiter) I'm done. See you! +> [ 41.309278] (6:worker@Bourassa) Start execution... +> [ 41.309278] (8:worker@Jupiter) I'm done. See you! > [ 42.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 43.309278] (0:maestro@) Simulation time 43.3093 > [ 43.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going! > [ 43.309278] (1:master@Tremblay) Goodbye now! -> [ 43.309278] (5:worker@Bourassa) Execution complete. -> [ 43.309278] (5:worker@Bourassa) Waiting a message on worker-4 -> [ 43.309278] (5:worker@Bourassa) I'm done. See you! +> [ 43.309278] (6:worker@Bourassa) Execution complete. +> [ 43.309278] (6:worker@Bourassa) Waiting a message on worker-4 +> [ 43.309278] (6:worker@Bourassa) I'm done. See you! p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED @@ -117,99 +117,99 @@ $ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:c > [ 0.000000] (1:master@Tremblay) Send a message to worker-0 > [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0 > [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1 -> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3 -> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 0.000000] (5:worker@Ginette) Waiting a message on worker-3 +> [ 0.000000] (6:worker@Bourassa) Waiting a message on worker-4 > [ 0.010825] (2:worker@Tremblay) Start execution... > [ 0.010825] (1:master@Tremblay) Send to worker-0 completed > [ 0.010825] (1:master@Tremblay) Send a message to worker-1 > [ 1.000000] (0:maestro@) Restart processes on host Fafard -> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2 +> [ 1.000000] (7:worker@Fafard) Waiting a message on worker-2 > [ 1.000000] (1:master@Tremblay) Mmh. The communication with 'worker-1' failed. Nevermind. Let's keep going! > [ 1.000000] (1:master@Tremblay) Send a message to worker-2 > [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.000000] (0:maestro@) Restart processes on host Jupiter -> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 2.000000] (8:worker@Jupiter) Waiting a message on worker-1 > [ 2.000000] (1:master@Tremblay) Mmh. The communication with 'worker-2' failed. Nevermind. Let's keep going! > [ 2.000000] (1:master@Tremblay) Send a message to worker-3 -> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! +> [ 2.000000] (7:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you! > [ 2.010825] (2:worker@Tremblay) Execution complete. > [ 2.010825] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 3.082474] (4:worker@Ginette) Start execution... +> [ 3.082474] (5:worker@Ginette) Start execution... > [ 3.082474] (1:master@Tremblay) Send to worker-3 completed > [ 3.082474] (1:master@Tremblay) Send a message to worker-4 -> [ 4.164948] (5:worker@Bourassa) Start execution... +> [ 4.164948] (6:worker@Bourassa) Start execution... > [ 4.164948] (1:master@Tremblay) Send to worker-4 completed > [ 4.164948] (1:master@Tremblay) Send a message to worker-0 > [ 4.175773] (2:worker@Tremblay) Start execution... > [ 4.175773] (1:master@Tremblay) Send to worker-0 completed > [ 4.175773] (1:master@Tremblay) Send a message to worker-1 -> [ 5.082474] (4:worker@Ginette) Execution complete. -> [ 5.082474] (4:worker@Ginette) Waiting a message on worker-3 -> [ 5.258247] (7:worker@Jupiter) Start execution... +> [ 5.082474] (5:worker@Ginette) Execution complete. +> [ 5.082474] (5:worker@Ginette) Waiting a message on worker-3 +> [ 5.258247] (8:worker@Jupiter) Start execution... > [ 5.258247] (1:master@Tremblay) Send to worker-1 completed > [ 5.258247] (1:master@Tremblay) Send a message to worker-2 -> [ 6.164948] (5:worker@Bourassa) Execution complete. -> [ 6.164948] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 6.164948] (6:worker@Bourassa) Execution complete. +> [ 6.164948] (6:worker@Bourassa) Waiting a message on worker-4 > [ 6.175773] (2:worker@Tremblay) Execution complete. > [ 6.175773] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 7.258247] (7:worker@Jupiter) Execution complete. -> [ 7.258247] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 7.258247] (8:worker@Jupiter) Execution complete. +> [ 7.258247] (8:worker@Jupiter) Waiting a message on worker-1 > [ 15.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 15.258247] (1:master@Tremblay) Send a message to worker-3 -> [ 15.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 15.258247] (4:worker@Ginette) Waiting a message on worker-3 +> [ 15.258247] (5:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 15.258247] (5:worker@Ginette) Waiting a message on worker-3 > [ 15.258247] (1:master@Tremblay) Mmh. The communication with 'worker-3' failed. Nevermind. Let's keep going! > [ 15.258247] (1:master@Tremblay) Send a message to worker-4 -> [ 16.340722] (5:worker@Bourassa) Start execution... +> [ 16.340722] (6:worker@Bourassa) Start execution... > [ 16.340722] (1:master@Tremblay) Send to worker-4 completed > [ 16.340722] (1:master@Tremblay) Send a message to worker-0 > [ 16.351546] (2:worker@Tremblay) Start execution... > [ 16.351546] (1:master@Tremblay) Send to worker-0 completed > [ 16.351546] (1:master@Tremblay) Send a message to worker-1 -> [ 17.434021] (7:worker@Jupiter) Start execution... +> [ 17.434021] (8:worker@Jupiter) Start execution... > [ 17.434021] (1:master@Tremblay) Send to worker-1 completed > [ 17.434021] (1:master@Tremblay) Send a message to worker-2 -> [ 18.340722] (5:worker@Bourassa) Execution complete. -> [ 18.340722] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 18.340722] (6:worker@Bourassa) Execution complete. +> [ 18.340722] (6:worker@Bourassa) Waiting a message on worker-4 > [ 18.351546] (2:worker@Tremblay) Execution complete. > [ 18.351546] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 19.434021] (7:worker@Jupiter) Execution complete. -> [ 19.434021] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 19.434021] (8:worker@Jupiter) Execution complete. +> [ 19.434021] (8:worker@Jupiter) Waiting a message on worker-1 > [ 27.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 27.434021] (1:master@Tremblay) Send a message to worker-3 -> [ 28.516495] (4:worker@Ginette) Start execution... +> [ 28.516495] (5:worker@Ginette) Start execution... > [ 28.516495] (1:master@Tremblay) Send to worker-3 completed > [ 28.516495] (1:master@Tremblay) Send a message to worker-4 -> [ 28.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! -> [ 28.516495] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 28.516495] (6:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going! +> [ 28.516495] (6:worker@Bourassa) Waiting a message on worker-4 > [ 28.516495] (1:master@Tremblay) Mmh. The communication with 'worker-4' failed. Nevermind. Let's keep going! > [ 28.516495] (1:master@Tremblay) Send a message to worker-0 > [ 28.527320] (2:worker@Tremblay) Start execution... > [ 28.527320] (1:master@Tremblay) Send to worker-0 completed > [ 28.527320] (1:master@Tremblay) Send a message to worker-1 -> [ 29.609794] (7:worker@Jupiter) Start execution... +> [ 29.609794] (8:worker@Jupiter) Start execution... > [ 29.609794] (1:master@Tremblay) Send to worker-1 completed > [ 29.609794] (1:master@Tremblay) Send a message to worker-2 -> [ 30.516495] (4:worker@Ginette) Execution complete. -> [ 30.516495] (4:worker@Ginette) Waiting a message on worker-3 +> [ 30.516495] (5:worker@Ginette) Execution complete. +> [ 30.516495] (5:worker@Ginette) Waiting a message on worker-3 > [ 30.527320] (2:worker@Tremblay) Execution complete. > [ 30.527320] (2:worker@Tremblay) Waiting a message on worker-0 -> [ 31.609794] (7:worker@Jupiter) Execution complete. -> [ 31.609794] (7:worker@Jupiter) Waiting a message on worker-1 +> [ 31.609794] (8:worker@Jupiter) Execution complete. +> [ 31.609794] (8:worker@Jupiter) Waiting a message on worker-1 > [ 39.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! > [ 39.609794] (1:master@Tremblay) Send a message to worker-3 -> [ 40.692268] (4:worker@Ginette) Start execution... +> [ 40.692268] (5:worker@Ginette) Start execution... > [ 40.692268] (1:master@Tremblay) Send to worker-3 completed > [ 40.692268] (1:master@Tremblay) Send a message to worker-4 -> [ 41.774742] (5:worker@Bourassa) Start execution... +> [ 41.774742] (6:worker@Bourassa) Start execution... > [ 41.774742] (1:master@Tremblay) Send to worker-4 completed > [ 41.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over. > [ 41.774742] (2:worker@Tremblay) I'm done. See you! -> [ 41.774742] (7:worker@Jupiter) I'm done. See you! +> [ 41.774742] (8:worker@Jupiter) I'm done. See you! > [ 42.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going! -> [ 43.774742] (5:worker@Bourassa) Execution complete. -> [ 43.774742] (5:worker@Bourassa) Waiting a message on worker-4 +> [ 43.774742] (6:worker@Bourassa) Execution complete. +> [ 43.774742] (6:worker@Bourassa) Waiting a message on worker-4 > [ 43.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going! -> [ 43.774742] (5:worker@Bourassa) I'm done. See you! +> [ 43.774742] (6:worker@Bourassa) I'm done. See you! > [ 43.774742] (1:master@Tremblay) Goodbye now! > [ 43.774742] (0:maestro@) Simulation time 43.7747 diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index ed619e0e0d..1d719e04b3 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -42,9 +42,12 @@ ActorPtr Actor::self() ActorPtr Actor::create(std::string name, s4u::Host* host, std::function code) { + smx_actor_t self = SIMIX_process_self(); + simgrid::kernel::actor::ActorImpl* actor = - simcall_process_create(std::move(name), std::move(code), nullptr, host, nullptr); - return actor->iface(); + simgrid::simix::simcall([self, name, host, code] { return self->init(std::move(name), host)->start(code); }); + + return actor->ciface(); } ActorPtr Actor::create(std::string name, s4u::Host* host, const std::string& function, std::vector args) diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 9268dd42ad..4e0228729f 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -444,51 +444,63 @@ void ActorImpl::set_host(s4u::Host* dest) dest->pimpl_->process_list_.push_back(*this); } -ActorImplPtr ActorImpl::create(std::string name, simix::ActorCode code, void* data, s4u::Host* host, - std::unordered_map* properties, ActorImpl* parent_actor) +ActorImplPtr ActorImpl::init(std::string name, s4u::Host* host) { + ActorImpl* actor = new ActorImpl(simgrid::xbt::string(name), host); + actor->set_ppid(this->pid_); - XBT_DEBUG("Start actor %s@'%s'", name.c_str(), host->get_cname()); + intrusive_ptr_add_ref(actor); + /* The on_creation() signal must be delayed until there, where the pid and everything is set */ + s4u::Actor::on_creation(actor->iface()); - if (not host->is_on()) { - XBT_WARN("Cannot launch actor '%s' on failed host '%s'", name.c_str(), host->get_cname()); + return ActorImplPtr(actor); +} + +ActorImpl* ActorImpl::start(simix::ActorCode code) +{ + xbt_assert(code && host_ != nullptr, "Invalid parameters"); + + if (not host_->is_on()) { + XBT_WARN("Cannot launch actor '%s' on failed host '%s'", name_.c_str(), host_->get_cname()); std::rethrow_exception( - std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Cannot create actor on failed host."))); + std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Cannot start actor on failed host."))); } - ActorImpl* actor = new ActorImpl(simgrid::xbt::string(name), host); + this->code = code; + XBT_VERB("Create context %s", get_cname()); + context_ = simix_global->context_factory->create_context(std::move(code), this); - xbt_assert(code && host != nullptr, "Invalid parameters"); - /* actor data */ - actor->set_user_data(data); - actor->code = code; + XBT_DEBUG("Start context '%s'", get_cname()); - if (parent_actor != nullptr) - actor->set_ppid(parent_actor->get_pid()); + /* Add the actor to its host's actor list */ + host_->pimpl_->process_list_.push_back(*this); + simix_global->process_list[pid_] = this; - XBT_VERB("Create context %s", actor->get_cname()); - actor->context_ = simix_global->context_factory->create_context(std::move(code), actor); + /* Now insert it in the global actor list and in the actor to run list */ + XBT_DEBUG("Inserting [%p] %s(%s) in the to_run list", this, get_cname(), host_->get_cname()); + simix_global->actors_to_run.push_back(this); + + return this; +} + +ActorImplPtr ActorImpl::create(std::string name, simix::ActorCode code, void* data, s4u::Host* host, + std::unordered_map* properties, ActorImpl* parent_actor) +{ + XBT_DEBUG("Start actor %s@'%s'", name.c_str(), host->get_cname()); + + ActorImplPtr actor = SIMIX_process_self()->init(simgrid::xbt::string(name), host); + + /* actor data */ + actor->set_user_data(data); /* Add properties */ if (properties != nullptr) for (auto const& kv : *properties) actor->set_property(kv.first, kv.second); - /* Add the actor to its host's actor list */ - host->pimpl_->process_list_.push_back(*actor); - - XBT_DEBUG("Start context '%s'", actor->get_cname()); + actor->start(std::move(code)); - /* Now insert it in the global actor list and in the actor to run list */ - simix_global->process_list[actor->get_pid()] = actor; - XBT_DEBUG("Inserting [%p] %s(%s) in the to_run list", actor, actor->get_cname(), host->get_cname()); - simix_global->actors_to_run.push_back(actor); - intrusive_ptr_add_ref(actor); - - /* The on_creation() signal must be delayed until there, where the pid and everything is set */ - s4u::Actor::on_creation(actor->iface()); - - return ActorImplPtr(actor); + return actor; } void create_maestro(simix::ActorCode code) diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index a0c178d4d0..3071474437 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -105,6 +105,9 @@ public: s4u::ActorPtr iface() { return s4u::ActorPtr(&piface_); } s4u::Actor* ciface() { return &piface_; } + ActorImplPtr init(std::string name, s4u::Host* host); + ActorImpl* start(simix::ActorCode code); + static ActorImplPtr create(std::string name, simix::ActorCode code, void* data, s4u::Host* host, std::unordered_map* properties, ActorImpl* parent_actor); static ActorImplPtr attach(std::string name, void* data, s4u::Host* host,