hst/container: additional shim exit codes
All checks were successful
Test / Create distribution (push) Successful in 57s
Test / Sandbox (push) Successful in 4m26s
Test / Sandbox (race detector) (push) Successful in 6m36s
Test / Hakurei (push) Successful in 6m58s
Test / Hakurei (race detector) (push) Successful in 8m54s
Test / Hpkg (push) Successful in 9m13s
Test / Flake checks (push) Successful in 3m13s

These are now considered stable, defined behaviour and can be used by external programs to determine shim outcome.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-10-15 22:09:33 +09:00
parent ae65491223
commit 5e0f15d76b
3 changed files with 19 additions and 11 deletions

View File

@@ -23,14 +23,11 @@ import (
//#include "shim-signal.h"
import "C"
const (
// setup pipe fd for [container.Receive]
shimEnv = "HAKUREI_SHIM"
// only used for a nil configured env map
envAllocSize = 1 << 6
)
// shimEnv is the name of the environment variable storing decimal representation of
// setup pipe fd for [container.Receive].
const shimEnv = "HAKUREI_SHIM"
// shimParams is embedded in outcomeState and transmitted from priv side to shim.
type shimParams struct {
// Priv side pid, checked against ppid in signal handler for the syscall.SIGCONT hack.
PrivPID int
@@ -172,7 +169,7 @@ func ShimMain() {
if err := z.Start(); err != nil {
printMessageError("cannot start container:", err)
os.Exit(1)
os.Exit(hst.ShimExitFailure)
}
if err := z.Serve(); err != nil {
printMessageError("cannot configure container:", err)
@@ -189,7 +186,7 @@ func ShimMain() {
var exitError *exec.ExitError
if !errors.As(err, &exitError) {
if errors.Is(err, context.Canceled) {
os.Exit(2)
os.Exit(hst.ShimExitCancel)
}
log.Printf("wait: %v", err)
os.Exit(127)