Refinement sometimes gets stuck on the qspinlock unit tests. This is because the Z3 solver doesn't return from its first isUnsat call. If I forcefully terminate the solver, I get the exception
org.sosy_lab.java_smt.solvers.z3.Z3SolverException: Solver returned 'unknown' status, reason: (incomplete (theory arithmetic))
I assume this is because qspinlock needs BV theory but we use IA theory by default.
This theory mixing can cause Z3 to get stuck.
It does not seem to happen with the other solvers (assume/incremental), likely because the Wmm constraints prohibit the smt solver to even get into the incomplete situation.
As long as we cannot configure individual tests to use different ARCH_PRECISION, I think we need to remove this unit test.
Refinement sometimes gets stuck on the qspinlock unit tests. This is because the Z3 solver doesn't return from its first
isUnsat
call. If I forcefully terminate the solver, I get the exceptionI assume this is because qspinlock needs BV theory but we use IA theory by default. This theory mixing can cause Z3 to get stuck. It does not seem to happen with the other solvers (assume/incremental), likely because the Wmm constraints prohibit the smt solver to even get into the incomplete situation.
As long as we cannot configure individual tests to use different
ARCH_PRECISION
, I think we need to remove this unit test.