Snapshot & Desocket
Process restore backends and protocol-level session reset.
Two complementary mechanisms keep long campaigns stable: snapshot restores the target process after crash, and desocket resets protocol session state cheaper than full TCP teardown when connection reuse is enabled.
Snapshot off; desocket strategies active only as needed with reuse. Zero behaviour change until -Z / snapshot config is enabled. Modules: src/execution/snapshot/, src/execution/desocket/.
Snapshot
nexsiz -t "./target_daemon" -Z --snapshot-backend process -m ftp -v
nexsiz -t "./target_daemon" -Z --snapshot-backend criu -m ftp -v # needs --features criu
# config
snapshot=true
snapshot_backend=process
target_cmd=./target_daemon
| Backend | Behaviour |
|---|---|
null | Disabled |
process | Kill + respawn via target_cmd (default when -Z) |
criu | CRIU dump/restore; feature-gated; criu on PATH |
- Engine takes snapshot at campaign start; restores on crash.
- Successful restore bumps
restore_epoch→ all workers force-reconnect. - Requires
-t / --cmd / --target-cmdfor process backends. - Output may include
output/snapshot/when enabled.
Desocket
Protocol-level connection reset without full reconnect. Implements ProtocolReset with builtin strategies for FTP, SMTP, MQTT, HTTP, plus binary/null backends and SocketState tracking.
- Used when
connection_reuseis on and the session needs a clean slate cheaper than TCP teardown + rehandshake. - Feeds desocket counters and cost-aware energy scheduling.
- JSON models may embed a
desocketblock (sequences, goodbye,success_on_response) — seemodels/custom-example.json.
# disable reuse entirely (always new connection)
nexsiz -m ftp -n -v
# config
connection_reuse=false
Local daemons under -t that die on crash and must be revived for continued fuzzing. Network-only targets without a spawnable process do not use process/CRIU snapshot.