Repository navigation
v0.15.2
Signals reach a running task without depending on a look at its process, and a run counts as stopped only if its stop reached the task's own command while it ran.
Fixed
- A signal for a running task is never dropped by a misread. Before each signal, loadmaster checked the task's process group by its leader's start time, so that a group ID the OS reused after the task ended is never hit. While the task's command is a child not yet waited for, its PID (the group's ID) cannot be handed out again, so the group is the task's for certain: the signal now goes without that check, and the OS says whether anyone got it. Once the command has been waited for, the start time is checked as before. A start time misread while the task ran would have dropped the signal without a word; this was closed in case it was behind a Ctrl-C test that timed out once on a macOS Intel runner (never reproduced).
- A failure is no longer recorded as a stop when the stop came too late. The history's
stopped(asked to stop before it exited), whichreportcounts as killed rather than failed, took any stop sent before the command's exit was seen. A command that failed on its own just before a stop, leaving processes in its group, or that had moved itself to another group, was recorded as stopped when the stop reached what it left. Now loadmaster asks the OS, as the command's parent and without waiting for it, whether it still runs in its group right before the signal, and only a stop that reached it counts. That also holds where a look by PID cannot see the command (hidepidon Linux, a command that is not dumpable).
Tests
- The stop tests wait for at least the signals they expect, and on a timeout say what the task logged, whether it and loadmaster still run, and what loadmaster said.
Install
mise use -g github:ktanaka101/loadmaster@0.15.2Or download the archive for your platform below: macOS (Apple Silicon and Intel) and Linux (x86_64 and arm64, statically linked).