From 6cf6924fe5a56a5eb546ce52266857e13c2b21e4 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sun, 23 Feb 2025 23:54:36 +0900 Subject: [PATCH] dbus: filter exit errors caused by signal Signed-off-by: Ophestra --- dbus/run.go | 9 +++++++++ internal/app/process.go | 1 + 2 files changed, 10 insertions(+) diff --git a/dbus/run.go b/dbus/run.go index 087990d..9dfc9f4 100644 --- a/dbus/run.go +++ b/dbus/run.go @@ -149,6 +149,15 @@ func (p *Proxy) Wait() error { errs[0] = nil } + var exitError *exec.ExitError + if errors.As(errs[0], &exitError) && + exitError != nil && + exitError.Exited() && + exitError.ExitCode() == -1 { + // exit due to signal + errs[0] = nil + } + // ensure socket removal so ephemeral directory is empty at revert if err := os.Remove(p.session[1]); err != nil && !errors.Is(err, os.ErrNotExist) { errs[1] = err diff --git a/internal/app/process.go b/internal/app/process.go index 4b88cc5..06c6f89 100644 --- a/internal/app/process.go +++ b/internal/app/process.go @@ -84,6 +84,7 @@ func (seal *outcome) Run(ctx context.Context, rs *fst.RunState) error { ec.Set(system.Process) if states, err := c.Load(); err != nil { // revert per-process state here to limit damage + fmsg.Verbosef("cannot load state entries: %v", err) return errors.Join(err, seal.sys.Revert(ec)) } else { if l := len(states); l == 0 {