# Saving fuzzer crash files as reproductions

**URL:** <https://ziggit.dev/t/saving-fuzzer-crash-files-as-reproductions/15768>\
**Category:** Help\
**Tags:** zig-0-16, fuzzing\
**Created:** [May 28, 2026, 9:52am UTC](https://ziggit.dev/t/saving-fuzzer-crash-files-as-reproductions/15768 "2026-05-28T09:52:28Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![gooncreeper](https://ziggit.dev/user_avatar/ziggit.dev/gooncreeper/32/7984_2.png) [@gooncreeper](https://ziggit.dev/u/gooncreeper)\
**Post date:** [May 28, 2026, 9:14pm UTC](https://ziggit.dev/t/saving-fuzzer-crash-files-as-reproductions/15768/2 "2026-05-28T21:14:01Z")

</div>

I recommend symlinking (or copying every time) the crash file into the source directory and doing something akin to the following while testing:

```zig
test "fuzz test" {
    try std.testing.fuzz(fuzzCtx, fuzzFn, .{
        .corpus = &.{ @embedFile("crash") },
    });
}

```

I also usually take advantage of `@import("builtin").fuzz` to print a human-readable input when rerunning in debug mode. Note that you will see two runs, one with your actual case and one with an empty input.

To answer your first question, the fuzzer does not continue running once it finds a crash, though the build system continues running for the webui.

---

_[View the full topic](https://ziggit.dev/t/saving-fuzzer-crash-files-as-reproductions/15768)._
