Skip to content

Reprl for Fuzzilli fuzzing#4917

Merged
jasnell merged 1 commit intomainfrom
reprl-2
Nov 4, 2025
Merged

Reprl for Fuzzilli fuzzing#4917
jasnell merged 1 commit intomainfrom
reprl-2

Conversation

@mschwarzl
Copy link
Copy Markdown
Contributor

  • Implemented a REPRL interface that can be used for fuzzing workerd with Fuzzilli
  • Stdin.reprl opens up the shared memory and required pipes, waits for the file size and parses the file from Fuzzilli
  • Added a new fuzzilli command to main
  • Added a test for the REPRL interface

@mschwarzl mschwarzl requested review from a team as code owners August 27, 2025 14:55
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Aug 27, 2025

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Aug 27, 2025

The generated output of @cloudflare/workers-types matches the snapshot in types/generated-snapshot 🎉

@mschwarzl
Copy link
Copy Markdown
Contributor Author

I have read the CLA Document and I hereby sign the CLA

@mschwarzl
Copy link
Copy Markdown
Contributor Author

recheck

github-actions Bot added a commit that referenced this pull request Aug 27, 2025
@mschwarzl mschwarzl force-pushed the reprl-2 branch 2 times, most recently from b4d4fff to 53e719f Compare August 27, 2025 15:31
@mschwarzl
Copy link
Copy Markdown
Contributor Author

recheck

@mschwarzl mschwarzl force-pushed the reprl-2 branch 16 times, most recently from 6e435f0 to 55b86b3 Compare August 29, 2025 06:53
Comment thread src/workerd/api/global-scope.h Outdated
Comment thread src/workerd/api/global-scope.c++
Comment thread src/workerd/api/unsafe.h Outdated
Comment thread src/workerd/tests/test-reprl.c++ Outdated
Comment thread src/workerd/tests/test-reprl.c++ Outdated
Comment thread samples/reprl/README.md Outdated
@mschwarzl mschwarzl force-pushed the reprl-2 branch 5 times, most recently from b7bc1cf to 01c1059 Compare October 2, 2025 15:27
@mschwarzl mschwarzl requested a review from mikea October 21, 2025 12:15
Comment thread src/workerd/api/global-scope.c++
Comment thread src/workerd/api/global-scope.c++ Outdated
Comment thread src/workerd/util/immediate-crash.h
Comment thread src/workerd/server/server.c++
@mschwarzl mschwarzl force-pushed the reprl-2 branch 6 times, most recently from d436ec9 to c773dd9 Compare October 28, 2025 09:27
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Oct 28, 2025

CodSpeed Performance Report

Merging #4917 will degrade performances by 9.25%

Comparing reprl-2 (2c32de2) with main (2376e81)

Summary

❌ 1 regression
✅ 33 untouched
⏩ 9 skipped1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Change
Encode_ASCII_256[0/0/256] 4.4 ms 4.8 ms -9.25%

Footnotes

  1. 9 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@mschwarzl mschwarzl force-pushed the reprl-2 branch 3 times, most recently from 543fb2a to 39fc71c Compare November 3, 2025 15:41
Copy link
Copy Markdown
Collaborator

@jasnell jasnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once CI is green, LGTM

@mschwarzl mschwarzl force-pushed the reprl-2 branch 2 times, most recently from 20ac51e to 2192f02 Compare November 4, 2025 08:45
@mschwarzl mschwarzl dismissed mikea’s stale review November 4, 2025 09:27

Changes were applied

This commit adds comprehensive support for fuzzing workerd using Fuzzilli's
REPRL (Read-Eval-Print-Reset-Loop) protocol.

Key changes:
- Implement REPRL protocol handler in workerd server with --stdin-reprl flag
- Add fuzzilli() JavaScript API for crash testing and coverage tracking
- Integrate libreprl C library for REPRL client communication
- Add KJ-based test framework integration (test-reprl.c++)
- Create example Fuzzilli configurations and mock services
- Add immediate-crash.h utility for controlled crash testing
- Fix V8 ASAN macro redefinition warnings by adding V8_USE_ADDRESS_SANITIZER
- Update .bazelrc to use clang-19 directly instead of ccache wrapper

The implementation allows Fuzzilli to:
- Execute JavaScript code in isolated REPRL sessions
- Collect sanitizer coverage feedback
- Detect crashes and memory errors
- Reset worker state between executions

Example usage:
  bazel test --config=fuzzilli //src/workerd/tests:test-reprl
  ./workerd test fuzzilli/config.capnp --experimental --stdin-reprl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants