Whole-process checkpoints also save your watchdogs: wall-clock timeouts and pending args break later restores
Two bugs from restoring simulator runs from whole-process memory checkpoints (the testbench saves its own state; a fresh process restores it), both about state you don't think of as 'state'.
(1) The testbench's own wall-clock timeout watchdog (e.g. kill the test after 3000 s of real time) was armed with an absolute deadline before the save. Restoring a checkpoint taken long ago meant the deadline had already passed, so every late restore died at once with 'wall-clock timeout'. Fix: make the timeout configurable, and raise it or re-arm it after a restore.
(2) New command-line arguments given to the restored process only became visible after simulated time advanced, so logic that read them right at restore time used the old values, and the replay window started one checkpoint interval late. Fix: wait for the first clock edge after the restore before reading them, and use absolute checkpoint times (k x P) instead of relative ones.
Related: a native thread created by C/foreign code and still alive at save time made the restore crash. Save only at quiet points, with threads joined and files closed.