Dear all,

Recently I find quite often that after "go test -fuzz" reported an error, 
the command shown to re-run the test does not reproduce the failure.  For 
example, just now I got the following:

voss@dumpling [..nt/tounicode2] go test -fuzz FuzzToUnicode
fuzz: elapsed: 0s, gathering baseline coverage: 0/2 completed
fuzz: elapsed: 0s, gathering baseline coverage: 2/2 completed, now fuzzing 
with 10 workers
fuzz: elapsed: 3s, execs: 280461 (93481/sec), new interesting: 24 (total: 
26)
fuzz: elapsed: 5s, execs: 410320 (72348/sec), new interesting: 60 (total: 
62)
--- FAIL: FuzzToUnicode (4.80s)
    --- FAIL: FuzzToUnicode (0.00s)
        tounicode_test.go:129: template: tounicode:26:2: executing 
"tounicode" at <Single $cs .>: error calling Single: runtime error: integer 
divide by zero

    Failing input written to testdata/fuzz/FuzzToUnicode/2566873a28045c1b
    To re-run:
    go test -run=FuzzToUnicode/2566873a28045c1b
FAIL
exit status 1
FAIL seehuhn.de/go/pdf/font/tounicode2 4.957s
voss@dumpling [..nt/tounicode2] go test -run=FuzzToUnicode/2566873a28045c1b
PASS
ok   seehuhn.de/go/pdf/font/tounicode2 0.122s

The fuzzer reported a failure, and when I re-run the test I get a "PASS".

How to debug such a problem?

I understand that my fuzz function may somehow be non-deterministic, but so 
far I have not found any cause of non-determinism and re-running the test 
10 times gives me 10 passes.  Also, for a bug the fuzzer reported earlier, 
I found it very hard to believe that the given input could make the fuzz 
function reach the site of the error message.  Could it be that the fuzzer 
sometimes looses track of which input belongs to which fuzzing run, and 
then reports the wrong input?

If somebody wants to play with this, here is how to reproduce (up to 
randomness) the fuzzing run shown above:

 git clone https://github.com/seehuhn/go-pdf.git
 cd go-pdf/
 git reset --hard 26c235ad
 cd font/tounicode2/
 go test -fuzz FuzzToUnicode

Any suggestions on how to debug such errors would be most welcome.

Many thanks,
Jochen

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/3fe3725b-e59e-4b1f-a2e9-0f28c15ea3d4n%40googlegroups.com.

Reply via email to