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

Kuchta, Tomasz t.kuchta12 at imperial.ac.uk
Fri Feb 27 11:40:31 GMT 2015


You may want to check if you have stack limit set to unlimited (you can do this using ulimit -s).

Best regards,
Tomek

> On 27 Feb 2015, at 10:52, Cristian Cadar <c.cadar at imperial.ac.uk> wrote:
> 
> 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
>> 
> 
> _______________________________________________
> klee-dev mailing list
> klee-dev at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev

-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 6199 bytes
Desc: not available
URL: <http://mailman.ic.ac.uk/pipermail/klee-dev/attachments/20150227/81abb556/attachment.bin>


More information about the klee-dev mailing list