Repository navigation
1.6.1 - 2026-07-25
Release Notes
Fixed
-
Background consolidation leaked its locks to the consolidator backend. The
detached child holds the scope and slot locks through descriptors whose
FD_CLOEXECthe parent deliberately cleared, then execs a consolidator CLI.
Rust'sCommanddoes not close descriptors, so that backend inherited both
flocks and kept them after the child exited. With four slots, orphaned
backends could hold every one of them until they died or the machine
rebooted, which is the starvation the slot ceiling was added to prevent.The child now marks every inherited descriptor close-on-exec before selecting
a backend. Marking is not closing: the locks stay held for the child's
lifetime and simply stop surviving anexec. -
Background consolidation failed outright on Linux 5.9 and 5.10.
CLOSE_RANGE_CLOEXECarrived in 5.11, so on those kernelsclose_range
exists but rejects the flag withEINVAL, and onlyENOSYSwas treated as
tolerable. Both are now tolerated, and the sealing path falls back to walking
/proc/self/fdwhen the flag is unavailable.
Install memd 1.6.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fmschulz/memd/releases/download/v1.6.1/memd-installer.sh | shDownload memd 1.6.1
| File | Platform | Checksum |
|---|---|---|
| memd-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| memd-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| memd-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| memd-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |