mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-26 13:39:47 +00:00
27f7e11e9b
Uninstall treats a live Unraid go shell as an unknown boot owner and refuses, because that shell may still hold later boot lines in memory. Signalling the watchdog would release it to run them. The check only looked for /boot/config/go in a process whose name is a shell. Unraid's rc.local never runs that path: it writes a fromdos copy to /var/tmp/go (go.safemode in safe mode) and executes that copy directly. The kernel then names the process "go", with argv "/bin/bash /var/tmp/go", so the check never matched it. Hosts installed before the detached go entry still have this shell blocked on the old foreground wrapper line. On those hosts uninstall classified the shell as unrelated, stopped the watchdog, and let go run the rest of its in-memory script. That is the case the live-shell refusal was added to prevent. The role check now covers a go or go.safemode process, or a shell, that has /boot/config/go, /var/tmp/go or a .safemode form as a whole argument. The old substring match is gone, so near-miss paths such as /var/tmp/gopher.sh no longer block removal, and a Go toolchain process named go still reads as unrelated. The NAS teardown control covers the rc.local spellings, and a new role-table test pins Unraid and QNAP. Both fail against the previous install.sh. A go file without a #! line is still not recognised. Bash runs it in a forked copy of rc.local, and the contracts now say so.