From: Marion Guthmuller Date: Sat, 21 Sep 2013 21:27:22 +0000 (+0200) Subject: model-checker : new tesh example for liveness model checking with visited state reduction X-Git-Tag: v3_9_90~104^2~31 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/266cb35285b869f282fd9df12a3d0eac48d1a146?hp=9cc1089f9aa108b9b8b32cc42c7afca7c45dc593 model-checker : new tesh example for liveness model checking with visited state reduction --- diff --git a/buildtools/Cmake/AddTests.cmake b/buildtools/Cmake/AddTests.cmake index 5eebdce487..99db9a38ea 100644 --- a/buildtools/Cmake/AddTests.cmake +++ b/buildtools/Cmake/AddTests.cmake @@ -516,6 +516,7 @@ if(NOT enable_memcheck) ADD_TEST(mc-bugged2-ucontext ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/mc --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/mc bugged2.tesh) if(PROCESSOR_x86_64) # liveness model-checking works only on 64bits (for now ...) ADD_TEST(mc-bugged1-liveness-ucontext ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/mc --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/mc bugged1_liveness.tesh) + ADD_TEST(mc-bugged1-liveness-visited-ucontext ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/mc --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/mc bugged1_liveness_visited.tesh) endif() endif() if(HAVE_RAWCTX) diff --git a/examples/msg/mc/bugged1_liveness.c b/examples/msg/mc/bugged1_liveness.c index 6f74bf266d..b020037ea5 100644 --- a/examples/msg/mc/bugged1_liveness.c +++ b/examples/msg/mc/bugged1_liveness.c @@ -128,14 +128,19 @@ int main(int argc, char *argv[]) MSG_init(&argc, argv); + char **options = &argv[1]; + MSG_config("model-check/property","promela_bugged1_liveness"); MC_automaton_new_propositional_symbol("r", &predR); MC_automaton_new_propositional_symbol("cs", &predCS); + + const char* platform_file = options[0]; + const char* application_file = options[1]; - MSG_create_environment("../msg_platform.xml"); + MSG_create_environment(platform_file); MSG_function_register("coordinator", coordinator); MSG_function_register("client", client); - MSG_launch_application("deploy_bugged1_liveness.xml"); + MSG_launch_application(application_file); MSG_main(); return 0; diff --git a/examples/msg/mc/bugged1_liveness.tesh b/examples/msg/mc/bugged1_liveness.tesh index 96fd359d4e..3cc303e224 100644 --- a/examples/msg/mc/bugged1_liveness.tesh +++ b/examples/msg/mc/bugged1_liveness.tesh @@ -2,7 +2,7 @@ ! expect signal SIGABRT ! timeout 20 -$ ${bindir:=.}/bugged1_liveness --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=contexts/factory:ucontext +$ ${bindir:=.}/bugged1_liveness ${bindir:=..}/msg_platform.xml ${bindir:=.}/deploy_bugged1_liveness.xml --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=contexts/factory:ucontext > [ 0.000000] (0:@) Configuration change: Set 'model-check' to '1' > [ 0.000000] (0:@) Check the liveness property promela_bugged1_liveness > [ 0.000000] (0:@) Get debug information ... diff --git a/examples/msg/mc/bugged1_liveness_visited.tesh b/examples/msg/mc/bugged1_liveness_visited.tesh new file mode 100644 index 0000000000..3c5cc1ae9e --- /dev/null +++ b/examples/msg/mc/bugged1_liveness_visited.tesh @@ -0,0 +1,261 @@ +#! ./tesh + +! expect signal SIGABRT +! timeout 20 +$ ${bindir:=.}/bugged1_liveness ${bindir:=..}/msg_platform.xml ${bindir:=.}/deploy_bugged1_liveness_visited.xml --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" --cfg=contexts/factory:ucontext --cfg=model-check/visited:100 +> [ 0.000000] (0:@) Configuration change: Set 'model-check' to '1' +> [ 0.000000] (0:@) Configuration change: Set 'model-check/visited' to '100' +> [ 0.000000] (0:@) Check the liveness property promela_bugged1_liveness +> [ 0.000000] (0:@) Get debug information ... +> [ 0.000000] (0:@) Get debug information done ! +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (3:client@Fafard) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. resource now idle +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (1:coordinator@Tremblay) CS already used. Queue the request. +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (3:client@Fafard) Propositions changed : r=1, cs=0 +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (2:client@Boivin) 2 got the answer. Sleep a bit and release it +> [ 0.000000] (1:coordinator@Tremblay) CS release. Grant to queued requests (queue size: 1) +> [ 0.000000] (2:client@Boivin) Ask the request +> [ 0.000000] (1:coordinator@Tremblay) CS idle. Grant immediatly +> [ 0.000000] (0:@) Pair 91 already reached (equal to pair 79) ! +> [ 0.000000] (0:@) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +> [ 0.000000] (0:@) | ACCEPTANCE CYCLE | +> [ 0.000000] (0:@) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +> [ 0.000000] (0:@) Counter-example that violates formula : +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(3)Fafard (client)] iSend(src=(3)Fafard (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(3)Fafard (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(3)Fafard (client)] Wait(comm=(verbose only) [(3)Fafard (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iRecv(dst=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(1)Tremblay (coordinator)-> (2)Boivin (client)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iRecv(dst=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (56) +> [ 0.000000] (0:@) [(2)Boivin (client)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(2)Boivin (client)] iSend(src=(2)Boivin (client), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] Wait(comm=(verbose only) [(2)Boivin (client)-> (1)Tremblay (coordinator)]) (62) +> [ 0.000000] (0:@) [(1)Tremblay (coordinator)] iSend(src=(1)Tremblay (coordinator), buff=(verbose only), size=(verbose only)) (54) +> [ 0.000000] (0:@) Expanded pairs = 91 +> [ 0.000000] (0:@) Visited pairs = 502 +> [ 0.000000] (0:@) Executed transitions = 501 \ No newline at end of file diff --git a/examples/msg/mc/deploy_bugged1_liveness_visited.xml b/examples/msg/mc/deploy_bugged1_liveness_visited.xml new file mode 100644 index 0000000000..ca6bc8e1b2 --- /dev/null +++ b/examples/msg/mc/deploy_bugged1_liveness_visited.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +