[klee-dev] The incorrect result obtained from KLEE (BVTypeCheck: terms in atomic formulas must be of equal length)

Cristian Cadar c.cadar at imperial.ac.uk
Fri Feb 27 10:52:38 GMT 2015


I cannot reproduce this on my machine.  Can you open an issue at 
https://github.com/klee/klee/issues, giving more details on your 
configuration and how you ran KLEE?

Best,
Cristian

On 26/02/15 09:52, Yu-Fang Chen wrote:
> We tried two versions of STP (r940 and the latest) and KLEE gives us
> the message "BVTypeCheck: terms in atomic formulas must be of equal
> length" with both versions.
>
> Below is the program we run using klee and the output.
>
> PROGRAM:
>
> #include <assert.h>
> #include <klee/klee.h>
> #define N 5
>
> int avg (int x[N])
> {
>    int i;
>    int ret;
>    ret = 0;
>    for (i = 0; i < N; i++) {
>      ret = ret + x[i];
>    }
>    return ret / N;
> }
>
> int main ()
> {
>    int x[N];
>    int temp;
>    int ret;
>    int ret2;
>    int ret5;
>
>    klee_make_symbolic(x, sizeof x, "x");
>
>    ret = avg(x);
>
>    temp=x[0];x[0] = x[1]; x[1] = temp;
>    ret2 = avg(x);
>    temp=x[0];
>    int i;
>    for(i =0 ; i<N-1; i++){
>       x[i] = x[i+1];
>    }
>    x[N-1] = temp;
>    ret5 = avg(x);
>
>    if(ret != ret2 || ret !=ret5){
>      ERROR:
>        goto ERROR;
>    }
>    return 1;
> }
>
>
>
> OUTPUT:
>
> KLEE: output directory is "XXXXXX"
> valuewidth of lhs of EQ: 32
> valuewidth of rhs of EQ: 64
> indexwidth of lhs of EQ: 0
> indexwidth of rhs of EQ: 0
> Fatal Error: BVTypeCheck: terms in atomic formulas must be of equal length
>
> 338:(EQ
>    142:0x00000002
>    336:0x000000000000003F)
>
> 0
> error: STP Error: BVTypeCheck: terms in atomic formulas must be of equal length
> 0  klee            0x0000000000d9cb7f
> 1  klee            0x0000000000d9d089
> 2  libpthread.so.0 0x00007f0ac3162bd0
> 3  libc.so.6       0x00007f0ac239f037 gsignal + 55
> 4  libc.so.6       0x00007f0ac23a2698 abort + 328
> 5  klee            0x000000000062cbc9
> 6  klee            0x0000000000dcebcf BEEV::FatalError(char const*,
> BEEV::ASTNode const&, int) + 127
> 7  klee            0x0000000000dcf4f4 BEEV::BVTypeCheck(BEEV::ASTNode
> const&) + 1940
> 8  klee            0x0000000000db37a6 vc_iteExpr + 54
> 9  klee            0x0000000000632731
> klee::STPBuilder::bvVarRightShift(klee::ExprHandle, klee::ExprHandle)
> + 225
> 10 klee            0x000000000063380c
> klee::STPBuilder::constructSDivByConstant(klee::ExprHandle, unsigned
> int, unsigned long) + 428
> 11 klee            0x00000000006365d1
> klee::STPBuilder::constructActual(klee::ref<klee::Expr>, int*) + 7649
> 12 klee            0x0000000000633f13
> klee::STPBuilder::construct(klee::ref<klee::Expr>, int*) + 323
> 13 klee            0x0000000000634c72
> klee::STPBuilder::constructActual(klee::ref<klee::Expr>, int*) + 1154
> 14 klee            0x0000000000633f13
> klee::STPBuilder::construct(klee::ref<klee::Expr>, int*) + 323
> 15 klee            0x0000000000630393
> STPSolverImpl::computeInitialValues(klee::Query const&,
> std::vector<klee::Array const*, std::allocator<klee::Array const*> >
> const&, std::vector<std::vector<unsigned char, std::allocator<unsigned
> char> >, std::allocator<std::vector<unsigned char,
> std::allocator<unsigned char> > > >&, bool&) + 387
> 16 klee            0x000000000061bd15
> CexCachingSolver::getAssignment(klee::Query const&,
> klee::Assignment*&) + 245
> 17 klee            0x000000000061cf6b
> CexCachingSolver::computeValidity(klee::Query const&,
> klee::Solver::Validity&) + 843
> 18 klee            0x000000000061a815
> CachingSolver::computeValidity(klee::Query const&,
> klee::Solver::Validity&) + 149
> 19 klee            0x000000000062956b
> IndependentSolver::computeValidity(klee::Query const&,
> klee::Solver::Validity&) + 315
> 20 klee            0x00000000005f7eee
> klee::TimingSolver::evaluate(klee::ExecutionState const&,
> klee::ref<klee::Expr>, klee::Solver::Validity&) + 366
> 21 klee            0x00000000005caaa2
> klee::Executor::fork(klee::ExecutionState&, klee::ref<klee::Expr>,
> bool) + 226
> 22 klee            0x00000000005d6ae3
> klee::Executor::executeInstruction(klee::ExecutionState&,
> klee::KInstruction*) + 9123
> 23 klee            0x00000000005d96d6
> klee::Executor::run(klee::ExecutionState&) + 1798
> 24 klee            0x00000000005d9fdd
> klee::Executor::runFunctionAsMain(llvm::Function*, int, char**,
> char**) + 1805
> 25 klee            0x00000000005b5c1c main + 6956
> 26 libc.so.6       0x00007f0ac2389ea5 __libc_start_main + 245
> 27 klee            0x00000000005bed31
> Aborted (core dumped)
>
> _______________________________________________
> klee-dev mailing list
> klee-dev at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
>



More information about the klee-dev mailing list