Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : remove trigger for state equality detection
[simgrid.git] / examples / msg / mc / bugged1_liveness.c
index be326e4..458f509 100644 (file)
@@ -26,10 +26,10 @@ int predCS(){
 int coordinator(int argc, char *argv[])
 {
 
-  int CS_used = 0;           
+  int CS_used = 0;   
+  msg_task_t task = NULL, answer = NULL;        
 
   while (1) {
-    msg_task_t task = NULL;
     MSG_task_receive(&task, "coordinator");
     const char *kind = MSG_task_get_name(task); 
     if (!strcmp(kind, "request")) {    
@@ -39,9 +39,10 @@ int coordinator(int argc, char *argv[])
       } else {               
         if(strcmp(req, "2") == 0){
           XBT_INFO("CS idle. Grant immediatly");
-          msg_task_t answer = MSG_task_create("grant", 0, 1000, NULL);
+          answer = MSG_task_create("grant", 0, 1000, NULL);
           MSG_task_send(answer, req);
           CS_used = 1;
+          answer = NULL;
         }
       }
     } else {         
@@ -49,6 +50,8 @@ int coordinator(int argc, char *argv[])
       CS_used = 0;
     }
     MSG_task_destroy(task);
+    task = NULL;
+    kind = NULL;
   }
  
   return 0;
@@ -59,6 +62,7 @@ int client(int argc, char *argv[])
   int my_pid = MSG_process_get_PID(MSG_process_self());
 
   char *my_mailbox = bprintf("%s", argv[1]);
+  msg_task_t grant = NULL, release = NULL;
 
 
   while(1) {
@@ -72,8 +76,6 @@ int client(int argc, char *argv[])
       XBT_INFO("Propositions changed : r=1, cs=0");
     }
 
-
-    msg_task_t grant = NULL;
     MSG_task_receive(&grant, my_mailbox);
     const char *kind = MSG_task_get_name(grant);
 
@@ -83,11 +85,18 @@ int client(int argc, char *argv[])
       XBT_INFO("Propositions changed : r=0, cs=1");
     }
 
-
     MSG_task_destroy(grant);
+    grant = NULL;
+    kind = NULL;
+
     XBT_INFO("%s got the answer. Sleep a bit and release it", argv[1]);
+
     MSG_process_sleep(1);
-    MSG_task_send(MSG_task_create("release", 0, 1000, NULL), "coordinator");
+
+    release = MSG_task_create("release", 0, 1000, NULL);
+    MSG_task_send(release, "coordinator");
+
+    release = NULL;
 
     MSG_process_sleep(my_pid);
     
@@ -107,7 +116,7 @@ int main(int argc, char *argv[])
 
   MSG_init(&argc, argv);
 
-  MSG_config("model-check/property","promela1_bugged1_liveness");
+  MSG_config("model-check/property","promela_bugged1_liveness");
   MC_automaton_new_propositional_symbol("r", &predR);
   MC_automaton_new_propositional_symbol("cs", &predCS);