将带符号的位向量表达式转换为整数会引发AccessViolationException

时间:2014-04-04 13:26:23

标签: z3

我正在使用Z3 .NET API,并尝试使用以下代码将带符号的位向量表达式转换为整数:

using (Context context = new Context())
{
    Expr e = context.MkBV2Int(context.MkBV(-1, 32), true);
}

但是,我得到以下例外:

Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Microsoft.Z3.Native.LIB.Z3_mk_bv2int(IntPtr a0, IntPtr a1, Int32 a2)
   at Microsoft.Z3.Native.Z3_mk_bv2int(IntPtr a0, IntPtr a1, Int32 a2) in Z3 src\src\api\dotnet\Native.cs:line 2386
   at Microsoft.Z3.Context.MkBV2Int(BitVecExpr t, Boolean signed) in Z3 src\src\api\dotnet\Context.cs:line 1800

但是,无符号位向量的转换效果很好。

有什么问题?我该如何解决?非常感谢你提前。

1 个答案:

答案 0 :(得分:1)

感谢您报告此问题!低层C API确实存在一个错误。现在已经在不稳定的分支中修复了这个问题(参见here)。