Skip to content

TurboJam #26

Description

@sierkov

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

  1. 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.”
  2. 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.
  3. 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).

Metadata

Metadata

Assignees

Labels

gp-0.7.2stdStandard target packaging

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions