3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

fix #3169 - set cancellation timeout and limit during push. Also expose internalization outside of scope that disables cancellation

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-06 23:36:04 +01:00
parent 7d976e4f4d
commit f501380e89
6 changed files with 25 additions and 10 deletions

View file

@ -2886,12 +2886,12 @@ namespace smt {
}
void context::push() {
TRACE("unit_subsumption_bug", display(tout << "context::push()\n"););
scoped_suspend_rlimit _suspend_cancel(m.limit());
TRACE("unit_subsumption_bug", display(tout << "context::push()\n"););
pop_to_base_lvl();
setup_context(false);
bool was_consistent = !inconsistent();
internalize_assertions(); // internalize assertions before invoking m_asserted_formulas.push_scope
scoped_suspend_rlimit _suspend_cancel(m.limit());
propagate();
if (was_consistent && inconsistent()) {
// logical context became inconsistent during user PUSH