action: THREAD_JOIN can synchronize against execution order
authorBrian Norris <banorris@uci.edu>
Wed, 19 Sep 2012 01:37:22 +0000 (18:37 -0700)
committerBrian Norris <banorris@uci.edu>
Wed, 19 Sep 2012 01:37:22 +0000 (18:37 -0700)
synchronize_with() had an assertion to ensure that synchronization never
occurred opposite the execution trace ordering. But THREAD_JOIN is a special
case, where this ordering won't break the rest of the model-checker.

action.cc

index 1e28264..2021f0a 100644 (file)
--- a/action.cc
+++ b/action.cc
@@ -186,7 +186,7 @@ void ModelAction::read_from(const ModelAction *act)
  * @param act The ModelAction to synchronize with
  */
 void ModelAction::synchronize_with(const ModelAction *act) {
-       ASSERT(*act < *this);
+       ASSERT(*act < *this || type == THREAD_JOIN);
        model->check_promises(cv, act->cv);
        cv->merge(act->cv);
 }