Ticket 25911

Summary: proctrack/freebsd-reaper: Track job descendants with FreeBSD process reapers
Product: Slurm Reporter: Rikka Göring <rikka.goering>
Component: OtherAssignee: Tim Wickberg <tim>
Status: OPEN --- QA Contact:
Severity: C - Contributions    
Priority: ---    
Version: 26.11.x   
Hardware: All   
OS: Other   
Site: -Other- Slinky Site: ---
Alineos Sites: --- Atos/Eviden Sites: ---
Confidential Site: --- Coreweave sites: ---
Cray Sites: --- DS9 clusters: ---
Google sites: --- HPCnow Sites: ---
HPE Sites: --- IBM Sites: ---
NOAA SIte: --- NoveTech Sites: ---
Nvidia HWinf-CS Sites: --- OCF Sites: ---
Recursion Pharma Sites: --- SFW Sites: ---
SNIC sites: --- Tzag Elita Sites: ---
Linux Distro: --- Machine Name:
CLE Version: Version Fixed:
Target Release: --- DevPrio: ---
Emory-Cloud Sites: ---
Attachments: v1 proctrack/freebsd-reaper plugin

Description Rikka Göring 2026-09-26 05:26:37 MDT
Created attachment 46325 [details]
v1 proctrack/freebsd-reaper plugin

Add proctrack/freebsd-reaper, a process-tracking plugin using FreeBSD's procctl() process-reaper APIs. The Slurm step daemon acquires reaper status, tracks descendants across process-group changes and nested reapers, and signals the tracked process tree during cleanup. Build the plugin on FreeBSD.

On the FreeBSD test node, the comparison with proctrack/pgid was:

| Test case               |  freebsd-reaper  |  pgid  |
| ----------------------- | ---------------- | ------ |
| Orphaned child          | Pass             | Pass   |
| SIGTERM-resistant child | Pass             | Pass   |
| Nested child            | Pass             | Pass   |
| setsid escape           | Pass             | Fail   |
| setpgid escape          | Pass             | Fail   |
| Double-fork escape      | Pass             | Fail   |
| Nested daemon escape    | Pass             | Fail   |

A zombie regression was also retested: the child briefly became a zombie, disappeared promptly, and the node returned to IDLE without timing out or draining.

The patches apply to master at 9f9da53b4a, and the generated configure script passes a shell syntax check.