-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime: fatal error: unknown caller pc (libfuzz) #35158
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
Comments
This does not use unsafe and the only assembler would be in the stdlib. Imports here: https://godoc.org/github.com/klauspost/compress/flate?imports "sync" is only used for a sync.Once and there are no goroutines, so no races should happen either. Fuzz test imports: https://godoc.org/github.com/klauspost/compress-fuzz/flate?imports This unfortunately happens completely at random. |
Just checking if this is related to #35777. What kernel version are you running? Does the application itself receive a lot of signals? |
I don't have access to the servers, so I cannot tell you. It is running on https://fuzzit.dev/ - https://twitter.com/fuzzitdev |
As Keith Randall noted on the original issue #20846
|
Same issue in go1.14, more info about our case here: OffchainLabs/prysm#5131 |
I thought this might be resolved by #37782 in go 1.14.1, but we saw the issue again last night with libfuzzer on go 1.14.1. |
I was able to reproduce locally on kernel |
I can provide some more context about this issue, we use https://github.com/nhooyr/websocket/releases/tag/v1.8.7 to setup a websocket tunnel with default setting(with RFC 7692 permessage-deflate compression on), and we watched some panic in production, the stack trace as below:
Seems the source of problem is from this method: Go version: 1.19.4 |
@futurist I am not sure if this is related. My best bet would be there is a problem with the This issue should probably be closed since there is now built in fuzzing. |
@klauspost That way should I repost the error into https://github.com/klauspost/compress as a new issue? If it's really not related to the go runtime. |
@futurist It is not a problem in the compression package. The stack looks messed up. It looks like either a problem in the package you are using or a runtime problem. I can't tell you which. |
What version of Go are you using (
go version
)?Compiled through go-fuzz/libfuzz
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (
go env
)?Linux, AMD64 is as much as I know
What did you do?
I have 3 crashes crash from "fuzzit.dev" 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: https://gist.github.com/klauspost/d4ec7bd6ecefa1bec56dd8ca4ac8ec39
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 inmgcmark.go:711
. Final crash was while executingbytes.(*Buffer).grow
.Crashes have not reproduced locally, so this could be a libfuzz specific problem. Build script is here: https://github.com/klauspost/compress/blob/master/fuzzit.sh#L17 - 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?
Crash.
The text was updated successfully, but these errors were encountered: