来自 KLEE 的 Z3 无限循环

Z3 infinite loop from KLEE

我有一个修改版的 KLEE 和一个基本简单的查询 喜欢

(assert (= 173 (str.len "OREN"))) (meant to be false).

当我调用 Z3 解算器时,我陷入了无限循环 (虽然没有永远等待 :])在下面的 while 语句中 z3/src/ast/rewriter/rewriter_def.h:

while (!frame_stack().empty())

我已将其作为潜在错误发布在 GitHub/Z3Prover/z3/issues 但我完全不确定这确实是一个错误。非常感谢任何帮助,谢谢!

来自GitHub/Z3Prover/z3/issues中的答案:

KLEE uses the C API but uses wrapper classes to correctly do reference counting.

然而我当时的做法是:

called the Z3 C API without using KLEE's wrapper class: Z3ASTHandle

这让事情变得(非常)错误......