From: Brian Demsky Date: Thu, 4 Oct 2012 08:32:45 +0000 (-0700) Subject: fix bug...can't mo_check_promises until we're done resolving promises for a write... X-Git-Tag: pldi2013~105 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=cd61f25e9775d3807c09f0606a69440604ef1821 fix bug...can't mo_check_promises until we're done resolving promises for a write back in time --- diff --git a/model.cc b/model.cc index 824e1e4..667c1d5 100644 --- a/model.cc +++ b/model.cc @@ -1490,6 +1490,7 @@ ClockVector * ModelChecker::get_cv(thread_id_t tid) bool ModelChecker::resolve_promises(ModelAction *write) { bool resolved = false; + std::vector threads_to_check; for (unsigned int i = 0, promise_index = 0; promise_index < promises->size(); i++) { Promise *promise = (*promises)[promise_index]; @@ -1507,14 +1508,18 @@ bool ModelChecker::resolve_promises(ModelAction *write) post_r_modification_order(read, write); //Make sure the promise's value matches the write's value ASSERT(promise->get_value() == write->get_value()); - mo_check_promises(read->get_tid(), write); - delete(promise); + promises->erase(promises->begin() + promise_index); + threads_to_check.push_back(read->get_tid()); + resolved = true; } else promise_index++; } + for(unsigned int i=0;i