Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime: fatal error: unknown caller pc (libfuzz) #35158

klauspost opened this issue Oct 25, 2019 · 1 comment


Copy link

@klauspost klauspost commented Oct 25, 2019

What version of Go are you using (go version)?


Compiled through go-fuzz/libfuzz

Does this issue reproduce with the latest release?


What operating system and processor architecture are you using (go env)?

Fuzz test run on

Linux, AMD64 is as much as I know

What did you do?

I have 3 crashes crash from "" where I am running continuous fuzz testing of my compression packages. Go 1.12.10 was used for 2 builds, Go 1.13.3 for one.

There is no assembly or "unsafe" involved so there shouldn't be any reasonable way for memory corruption. This fuzzing is also strictly running in a single goroutine, so races also seems unlikely.

That said I have no idea about the hardware stability of the servers running the tests.

Also, a lot of new code has just been added here, so there is a chance of something bad, though I don't know how I would be able to trigger this error.

Crash logs:

Go 1.12.10 on top and bottom. Go 1.13.3 in the middle.

It is completely different functions that were pre-empted (flate.(*fastGen).matchlenLong) vs. flate.(*decompressor).Read - completely different code. All crashes were in mgcmark.go:711. Final crash was while executing bytes.(*Buffer).grow.

Crashes have not reproduced locally, so this could be a libfuzz specific problem. Build script is here: - all crashes have been in the same fuzzer (flate), so it seems something in there is triggering it.

What did you expect to see?

No crash, or more information.

What did you see instead?



This comment has been minimized.

Copy link
Contributor Author

@klauspost klauspost commented Oct 25, 2019

This does not use unsafe and the only assembler would be in the stdlib. Imports here:

"sync" is only used for a sync.Once and there are no goroutines, so no races should happen either.

Fuzz test imports:

This unfortunately happens completely at random.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
2 participants
You can’t perform that action at this time.