6 Replies Latest reply on May 9, 2014 2:56 PM by rosshorne

    Tracing parallel events

    rosshorne

      We're having difficulty with a core feature of monitors for scribble. Sequential protocols can be monitored correctly. However, we can't seam to monitor protocols with parallel composition.

       

      The following simple protocol demonstrates this problem. Role A sends messages to two separate roles in parallel.

       

      global protocol P(role A, role B, role C) {

        par {

            x(M) from A to B;

          } and {

            y(M) from A to C;

         }

      }

       

      Using the DefaultMonitor from the Java Developer Guide, trying to observe either send at A, or either receive at B or C, is always unsuccessful.

       

      The same problem can be observed with the tracer. For example the following trace, that sends to B first, then sends to C, should be a valid interleaving of events.

       

      "steps":[{

        "type":"MessageTransfer",

        "message":{ "operator":"x", "types":["M"], "values":[""]  },

        "fromRole":"A", "toRoles":["B"]

        },{

        "type":"MessageTransfer",

        "message":{ "operator":"y", "types":["M"], "values":[""]  },

        "fromRole":"A",  "toRoles":["C"]

        }]

       

      Can you reproduce this problem when monitoring protocols with parallel composition? ... or perhaps spot a more basic problem with the above protocol?

       

      Thank you for any pointers ,

      Ross