Hi @davxy,
I've prepared a Docker image with the fuzzing target of TurboJam, an open-source C++ implementation of JAM. The image is publicly available on DockerHub as r2rationality/turbojam-fuzz:20250821-000. It targets GP version 0.6.7.
Below is a quick usage guide along with a few open questions. Please let me know if this packaging approach works for you.
Usage
The image expects an externally mounted volume at /fuzzer, where it will create:
fuzzer.sock - the UNIX socket for listening for incoming connections
fuzzer.log - a diagnostic log file
Example command (creates both in ./jam-fuzz on the host):
docker run --rm -it -v ./jam-fuzz:/fuzzer r2rationality/turbojam-fuzz:20250821-000
Open Questions
- Behavior of GetState with an unknown header hash Can you confirm that closing the connection is the expected behavior in the following scenario?
- The client submits a block that is rejected.
- The client then requests the posterior state of that block by header hash.
- The target immediately closes the connection, per: “Receiving an unexpected or malformed message results in immediate session termination.”
- PVM traces for three failing tests The current implementation passes all conformance tests except three, which show minor divergences in gas consumption. Could you provide PVM traces for the following cases?
preimages/00000070
preimages/00000091
preimages/00000092.
- Including PVM traces in fuzz reports Would it be feasible to automatically include PVM traces in fuzzing reports? This would speed up debugging of subtle issues (e.g., identifying misbehaving host calls).
Hi @davxy,
I've prepared a Docker image with the fuzzing target of TurboJam, an open-source C++ implementation of JAM. The image is publicly available on DockerHub as
r2rationality/turbojam-fuzz:20250821-000. It targets GP version0.6.7.Below is a quick usage guide along with a few open questions. Please let me know if this packaging approach works for you.
Usage
The image expects an externally mounted volume at
/fuzzer, where it will create:fuzzer.sock- the UNIX socket for listening for incoming connectionsfuzzer.log- a diagnostic log fileExample command (creates both in
./jam-fuzzon the host):Open Questions
preimages/00000070preimages/00000091preimages/00000092.