[klee-dev] Trouble replaying test cases with symbolic files
Cristian Cadar
c.cadar at imperial.ac.uk
Thu Aug 17 15:11:03 BST 2017
Hi, just a short note to say that this is now fixed in the mainline.
Cristian
On 09/08/17 16:55, Cristian Cadar wrote:
> Yes, the right way to replay tests generated with --posix-runtime is via
> klee-replay. As Yude said, it is possible in some circumstances for
> KLEE to explore paths that triggers errors in programs using symbolic
> files, but here there is actually a bug in KLEE that I plan to fix very
> soon. In the meantime, please use the option --readable-posix-inputs
> when generating tests with KLEE.
>
> Best,
> Cristian
>
> On 05/08/17 07:24, Yude Lin wrote:
>> Hi Daniel,
>>
>> I think the first method doesn't understand symbolic inputs specified
>> by '--posix-runtime', so you're right.
>>
>> Isn't it an expected result for the second method? If 'A' doesn't
>> exist or is unreadable then the program crashes on fclose(NULL);
>> test000001 probably specifies an unreadable case. If there is an
>> test000002, it should be the not-null case.
>>
>> Regards,
>> Yude
>>
>> On Fri, Aug 4, 2017 at 7:35 AM, Daniel Schwartz
>> <d.schwartz at columbia.edu <mailto:d.schwartz at columbia.edu>> wrote:
>>
>> Hi,
>>
>> I'm struggling to figure out how to replay generated test cases with
>> symbolic files.
>>
>> I see in the documentation that there are two ways to replay test
>> cases.
>> 1. (As shown in: https://klee.github.io/tutorials/testing-function/
>> <https://klee.github.io/tutorials/testing-function/>) is to run the
>> executable with the KTEST_FILE flag set to a .ktest file.
>> 2. (As shown in: https://klee.github.io/tutorials/testing-coreutils/
>> <https://klee.github.io/tutorials/testing-coreutils/>) is to use
>> klee-replay
>>
>> My intuition is that the KTEST_FILE method won't work since there is
>> no call to klee_make_symbolic to intercept. I'm not sure why the
>> second method fails. I've included my attempt at both methods.
>>
>>
>> I've included a tester file for reproduction, the command I used to
>> launch KLEE and KLEE-replay, and the behavior I saw.
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> Here is the tester I wrote up:
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <klee/klee.h>
>>
>> int main(int argc, char **argv) {
>> char buf[1];
>>
>> FILE *file = fopen(argv[1], "r");
>> if ( file != NULL ) {
>> fread(buf, 1, 1, file);
>> }
>> fclose(file);
>>
>>
>> printf("%d", buf[0]);
>>
>> return 0;
>> }
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> I generate files with the following command:
>> $ klee --libc=uclibc --posix-runtime --min-query-time-to-log=-1
>> --max-solver-time=10 --max-time=21600 --max-memory=4096
>> --simplify-sym-indices --write-cvcs --write-cov
>> --dump-states-on-halt=false --disable-inlining --use-forked-solver
>> --use-cex-cache --allow-external-sym-calls -write-test-info
>> --max-instruction-time=30. --watchdog test5-cov-outputs-klee.bc A
>> -sym-files 1 32
>>
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> And I get the following behavior:
>>
>> $ KTEST_FILE=./klee-last/test000001.ktest ./tester
>> Segmentation fault
>>
>> $ klee-replay ./tester klee-last/test000001.ktest
>> klee-replay: TEST CASE: klee-last/test000001.ktest
>> klee-replay: ARGS: "./tester" "A"
>> warning: check_file A: dev mismatch: 2049 vs 0
>> warning: check_file A: mode mismatch: 0100000 vs 0
>> warning: check_file A: nlink mismatch: 1 vs 0
>> warning: check_file A: blksize mismatch: 4096 vs 0
>> klee-replay: EXIT STATUS: CRASHED signal 11 (0 seconds)
>>
>>
>>
>>
>> Thanks,
>> Daniel Schwartz
>>
>> _______________________________________________
>> klee-dev mailing list
>> klee-dev at imperial.ac.uk <mailto:klee-dev at imperial.ac.uk>
>> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
>> <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
>>
>
> _______________________________________________
> 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