Open lucasccordeiro opened 2 weeks ago
I learned the SMT code. Under my investigation, I found that the problem comes from assertion.
__ESBMC_assert(iA == iB, "iA and iB must be equal");
It works just fine if we remove this line.
https://github.com/esbmc/esbmc/blob/1af829d440e4f46af3987c7dd606427f95072593/src/goto-symex/symex_target_equation.cpp#L474-L482 An invalid iterator was encountered here. Earlier, we stored some iterators in a list and extracted them.
https://github.com/esbmc/esbmc/blob/1af829d440e4f46af3987c7dd606427f95072593/src/goto-symex/symex_target_equation.cpp#L365-L378 In this method, we seem to have removed some SSA assertions directly, and if we comment out this method, it works just fine.
Closed via https://github.com/esbmc/esbmc/issues/2102.
$ esbmc main.c --no-div-by-zero-check --force-malloc-success --no-align-check --k-step 2 --floatbv --unlimited-k-steps --unwind 2 --compact-trace --context-bound 3 --smt-during-symex
This is a previous PR, where @fbrausse solved a segfault in our SMT incremental: https://github.com/esbmc/esbmc/pull/1915.