Meta tags:
description= Rewind VM runs a Nix build, a test suite or any Linux command inside a deterministic KVM virtual machine. Scrub the run back to any step, attach gdb there, and fork it with a new seed.;
Headings (most frequently used words):
nix, in, the, run, step, it, bring, command, and, builds, flaky, test, scrub, any, back, to, that, broke, how, works, desktop, app, or, derivation, tutorials, case, studies, download, pricing, limits, process, tree, alive, files, newest, first, at, this, pack, inputs, deterministically, keep, keyframes, seek, root, filesystem, are, already, almost, closed, world, build, container, property, based, testing, schedule, points, reproducible, advanced, features, sigpipe, gc, closure, hang, store, schema, migration, lost, task, output, devenv, with, without, engine, cli, personal, commercial,
Text of the page (most frequently used words):
the (146), and (53), rewind (36), run (30), nix (27), with (23), step (21), from (20), app (17), that (16), one (15), build (15), linux (13), for (13), runs (13), github (12), every (12), its (12), license (11), any (11), read (11), same (10), #command (10), fork (10), check (10), rewindvm (10), you (9), kernel (9), inputs (9), schedule (8), gdb (8), fzakaria (8), download (8), under (8), time (7), your (7), kvm (7), what (7), source (7), log (7), tar (7), bug (7), here (7), x86_64 (6), use (6), line (6), where (6), first (6), desktop (6), case (6), output (6), inside (6), real (6), tutorial (6), builds (6), com (5), machines (5), cpu (5), are (5), open (5), free (5), failing (5), shell (5), latest (5), install (5), store (5), test (5), schedules (5), derivation (5), deterministic (5), see (4), personal (4), person (4), they (4), timeline (4), scrub (4), files (4), tree (4), engine (4), when (4), https (4), curl (4), only (4), flake (4), into (4), known (4), reproduced (4), which (4), thread (4), program (4), race (4), tutorials (4), machine (4), mylib (4), root (4), how (4), other (3), without (3), virtual (3), once (3), email (3), all (3), commercial (3), seat (3), each (3), whole (3), passing (3), processes (3), playhead (3), buy (3), cli (3), evaluate (3), keep (3), pricing (3), not (3), add (3), releases (3), programs (3), true (3), study (3), devenv (3), pinned (3), suite (3), closure (3), studies (3), side (3), crash (3), seeds (3), directory (3), reaches (3), there (3), properties (3), image (3), export (3), filesystem (3), replay (3), flaky (3), then (3), two (3), small (3), says (3), already (3), can (3), ends (3), try (3), back (3), this (3), works (3), found (2), tacos (2), lunchtimesurf (2), network (2), amd (2), system (2), call (2), threads (2), take (2), comes (2), running (2), many (2), refund (2), work (2), company (2), puts (2), boot (2), end (2), differ (2), offline (2), key (2), years (2), updates (2), per (2), using (2), mit (2), writable (2), yourself (2), dev (2), debug (2), next (2), enable (2), make (2), counter (2), profile (2), straight (2), both (2), while (2), task (2), lines (2), before (2), schema (2), migration (2), hang (2), sigpipe (2), fixed (2), transcript (2), them (2), held (2), tools (2), advanced (2), let (2), reproducible (2), between (2), until (2), sdk (2), points (2), vary (2), randomness (2), well (2), docker (2), find (2), container (2), tests (2), fix (2), follow (2), correct (2), code (2), does (2), date (2), clock (2), perturbed (2), differently (2), names (2), decides (2), drv (2), point (2), new (2), fails (2), event (2), reruns (2), erofs (2), writes (2), nothing (2), workload (2), bring (2), forks (2), parted (2), was (2), events (2), steps (2), page (2), keyframes (2), failure (2), jump (2), divergence (2), drag (2), vms (2), viewer (2), containers (2), 2026, santa, cruz, california, bugs, refunds, privacy, lunch, surf, llc, than, loopback, replays, recent, vendor, intel, loop, spins, never, interrupted, locks, sleeps, fine, turns, speed, limits, full, within, days, reason, covers, policy, working, link, project, will, send, bought, their, takes, who, uses, answers, question, screen, beside, words, tried, click, prompt, cat, diff, ours, gpl, patch, config, long, like, occasional, reminder, earns, readable, group, symbols, 150, tarballs, release, fssl, url, amdbranchcounterworkaround, branch, exact, also, adds, cachix, org, substituters, configuration, nixosmodules, default, imported, nixos, input, turn, module, pmu, status, either, dropped, last, traced, taking, child, exit, buffered, tokio, select, lost, sqlite, master, sqlite_busy_snapshot, hit, pipe, reported, upstream, string, pipefail, head, own, short, recipes, watchpoints, more, cpus, counting, fail, sharing, features, several, orders, name, wrote, bytes, blame, switch, catch, assertions, property, based, testing, exactly, interleaving, crashes, shutdown, pool, third, fourth, fifth, finds, why, reproduce, sixth, rest, today, starts, midnight, utc, day, saved, year, later, sees, hashes, whether, matches, copy, built, may, stops, perturbation, passes, too, hash, unit, reproduction, paths, attribute, most, making, done, almost, closed, world, users, interleavings, exploration, vanishes, printf, stays, put, way, heisenbugs, holding, instead, reading, failures, say, assert, judged, whose, reschedule, tarball, such, mounts, overlay, disk, src, cwd, messages, segfault, report, stack, stopped, watchpoint, counts, part, difference, amber, sigsegv, written, printed, console, compare, overview, reach, restores, keyframe, forward, seek, quarter, second, wall, snapshots, dirty, pages, content, addressed, blake3, zstd, shared, stored, vcpu, stock, carries, platform, interrupts, arrive, hands, control, moves, timestamp, hardware, rng, hidden, those, handoffs, deterministically, become, mapped, memory, boots, pack, recorded, function, computed, again, scrubber, needs, javascript, attach, newest, process, alive, phase, previous, example, data, passed, failed, 9x2k, watch, demo, produce, went, wrong, look, around, broke, menu, thing,
Text of the page (random words):
rewind vm deterministic linux vms you can scrub rewind and fork rewind vm how it works nix and containers tutorials case studies viewer try the real thing pricing github download menu how it works nix and containers tutorials case studies viewer pricing github download deterministic linux vms scrub any run back to the step that broke it rewind vm runs a nix build a test suite or any linux command inside a deterministic kvm virtual machine the same inputs produce the same events at the same steps every time when it fails drag the timeline back to where it went wrong look around and fork from there download watch the demo 2 24 v0 10 0 x86_64 linux the engine and cli are open source under the mit license the desktop app is 49 for personal use and free to evaluate try me drag the timeline rewind nix store 9x2k mylib 0 3 0 drv run 3 failed run 2 passed example data step in the run previous next jump to divergence divergence jump to failure failure step virtual time phase fork from here at this step build log processes process tree alive files newest first at this step attach gdb open shell export run the scrubber needs javascript to run how it works nothing is recorded while the workload runs a run is a function of its inputs so any step of it can be computed again pack the inputs the inputs a nix closure or any root filesystem become a read only erofs image mapped straight into the vm s memory a small linux kernel boots and runs your command run deterministically one vcpu on stock kvm so code in the vm runs on the real cpu the vm s kernel carries a small rewind platform interrupts arrive only when the vm hands control to rewind time moves only then and the timestamp counter and hardware rng are hidden a step is one of those handoffs keep keyframes every quarter second of wall time rewind snapshots the machine using kvm s dirty page log pages go into a content addressed store blake3 zstd so a page shared by keyframes runs and forks is stored once seek to reach a step rewind restores the latest keyframe at or before it and runs forward same inputs same events at the same steps in the desktop app the real app on the bug the tutorials follow overview compare threads check from here gdb shell source runs kernel console 1 2 3 4 5 6 the timeline the whole run with where it parted from the passing one build log what the build printed up to the playhead processes and files what was running and what was written the step s event here the sigsegv and where the runs parted fork from here reruns from this step under a new schedule every run all runs and forks of the build as a tree two runs side by side from where they part with the difference in amber which thread held the cpu at each step in both runs runs 8 to 64 schedules from one step and counts how they end gdb at any step of the run here stopped on a watchpoint a shell inside the vm at any step the source line a thread is on at the playhead with its stack every run and fork of the build as a tree the vm kernel s messages in the build log here its segfault report bring a command or bring a derivation any linux workload a root filesystem and a command rewind run root mylib tar cwd src make check the root is a directory an erofs image or a tarball such as docker export writes the vm mounts it under a writable overlay and nothing the command writes reaches your disk flaky tests rewind check reruns the command under perturbed schedules until one ends differently then names the step whose reschedule decides it properties say what a correct run is or assert it from inside the program with the rewind sdk and every schedule is judged by it seeds vary the program s randomness as well as its schedule ci failures a failing run is a directory holding its inputs and every event with its step keep it and scrub back from the crash instead of reading a log that ends there heisenbugs a race that vanishes when you add a printf stays put a failing run fails the same way every time it runs exploration fork a passing run at a step under new schedules to try other interleavings from that point on for nix users nix builds are already almost a closed world rewind nix mylib rewind check mylib pinned inputs no network fixed paths point rewind at a flake attribute and most of the work of making the build deterministic is already done drv the derivation hash is the unit of reproduction the machine the vm s kernel is a derivation too so the whole machine is pinned rewind check nix build check says the output may not be deterministic rewind check builds under perturbed schedules stops at the first build that ends differently and names the step that decides it without that one perturbation the build passes the output rewind nix hashes each output the vm builds and says whether it matches the copy already in your store so you can see the vm built what nix build does the clock builds see today s date the vm s clock starts at midnight utc on the day of the run the date is saved with the run so a replay a year later sees the same one tutorials the first two follow one real bug a shutdown race in a small c thread pool from install to fix the third says what a correct run is the fourth reaches a race between two lines of code the fifth finds why a build does not reproduce the sixth is the rest of the tools every transcript in them is real output nix a flaky nix build install with nix let rewind check find the interleaving that crashes a derivation s tests then replay it fork it and check the fix read the tutorial container a flaky test in a container the same bug from a docker image with no nix export the filesystem find the failing schedule and replay the crash exactly read the tutorial properties property based testing properties that catch a bug on the first run assertions from inside the program and seeds that vary its randomness as well as its schedule read the tutorial points schedule points a race with no system call between its read and its store which no schedule reaches until one line from the sdk puts a switch there read the tutorial reproducible builds reproducible builds build a derivation under several seeds and directory orders see which files differ and let rewind blame name the program that wrote the bytes read the tutorial advanced advanced features short recipes which thread held the cpu watchpoints the kernel s side of a crash tools inside the vm more cpus counting the schedules that fail from a step and sharing a failing run read the tutorial case studies rewind vm on nix s own test suite and on devenv every transcript in them is real output found by rewind a sigpipe in nix s gc closure test rewind s first run of nix s test suite hit a sigpipe flake in gc closure sh a pipe into head n1 under pipefail reported and fixed upstream with a here string read the case study known bug reproduced a hang in nix s store schema migration a known sqlite schema migration hang in nix master reproduced in rewind and pinned to sqlite_busy_snapshot with gdb inside the vm read the case study known bug reproduced lost task output in devenv a known devenv bug that dropped a task s last lines reproduced in rewind and traced with gdb to tokio select taking the child s exit before a buffered line read the case study download for x86_64 linux with kvm the engine and cli are open source on github and the desktop app is free to download and use while you evaluate it with nix run either straight from the flake or install both into your profile nix run github fzakaria rewindvm pmu status nix run github fzakaria rewindvm app nix profile install github fzakaria rewindvm github fzakaria rewindvm app on nixos add the flake as an input and turn on its module inputs rewind url github fzakaria rewindvm in your configuration with inputs rewind nixosmodules default imported it also adds rewindvm cachix org to nix s substituters programs rewind enable true programs rewind app enable true amd only make the branch counter exact at every boot programs rewind amdbranchcounterworkaround true without nix curl fssl https rewindvm dev install sh or take the tarballs from the latest release yourself the rewind command with the vm s kernel curl l https github com fzakaria rewindvm releases latest download rewind x86_64 linux tar gz tar xz the desktop app curl l https github com fzakaria rewindvm releases latest download rewind app x86_64 linux tar gz tar xz the kernel s debug symbols for rewind gdb next to the command 150 mb curl l https github com fzakaria rewindvm releases latest download rewind debug x86_64 linux tar gz tar xz if dev kvm is not readable and writable by you add yourself to the kvm group pricing evaluate the app free for as long as you like with an occasional reminder buy a license when it earns its keep engine and cli free mit license the engine and the command line the vm s kernel is linux with a patch and config of ours gpl 2 0 as linux is rewind run nix check fork and diff any step at the prompt log ps cat where shell and gdb open source for any use personal 49 once the desktop app for you all your machines 3 years of updates offline license key by email buy personal commercial 99 per seat the desktop app for use at a company one seat per person using the app 3 years of updates offline license key by email buy commercial the command line answers one question at a time the app puts the whole run on one screen a timeline to scrub from boot to the end the failing run beside a passing one with where they first differ in words the log processes files and source line at the playhead a tree of every fork and schedule tried and a fork gdb or a shell at any step in a click a personal license is for one person bought by that person on all their machines use at a company takes a commercial license a seat for each person who uses the app on as many machines as they use it on working on open source the app is free for that email tacos lunchtimesurf com with a link to the project you work on and we will send you a license every license comes with a full refund within 30 days for any reason see the refund policy and the app s license for what a license covers limits linux on x86_64 with kvm one virtual cpu your threads take turns and speed comes from running many machines at once a loop that spins without a system call is never interrupted locks sleeps and i o are fine a run replays on other recent machines with the same cpu vendor intel or amd no network other than loopback 2026 lunch time surf llc santa cruz california tacos lunchtimesurf com privacy refunds bugs found github
|