40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
From 4ebca5a005afbc19c08f663e24d3e76518d12fa8 Mon Sep 17 00:00:00 2001
|
|
From: Mohammed Ajmal Siddiqui <ajmalsiddiqui21@gmail.com>
|
|
Date: Wed, 5 Oct 2022 12:20:58 +0530
|
|
Subject: [PATCH] lxc-attach: Fix lost return codes of spawned processes that
|
|
are killed
|
|
|
|
lxc-attach swallows the return codes of processes that are terminated
|
|
via a signal, and by default exits with a return code of 0 (i.e.
|
|
indicating success) even if the command it tried to execute was
|
|
terminated.
|
|
|
|
This patch fixes it by explicitly checking if the process was terminated
|
|
via a signal, and returning an appropriate exit code.
|
|
|
|
Note that we add 128 to the signal value to generate the exit code
|
|
because by convention the exit code is 128 + signal number. e.g. if a
|
|
process is killed via signal 9, then the error code is 9 + 128 = 137.
|
|
|
|
Signed-off-by: Mohammed Ajmal Siddiqui <ajmalsiddiqui21@gmail.com>
|
|
---
|
|
src/lxc/tools/lxc_attach.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/src/lxc/tools/lxc_attach.c b/src/lxc/tools/lxc_attach.c
|
|
index fa303c7b4..6482b0aee 100644
|
|
--- a/src/lxc/tools/lxc_attach.c
|
|
+++ b/src/lxc/tools/lxc_attach.c
|
|
@@ -399,6 +399,8 @@ int lxc_attach_main(int argc, char *argv[])
|
|
}
|
|
if (WIFEXITED(ret))
|
|
wexit = WEXITSTATUS(ret);
|
|
+ else if (WIFSIGNALED(ret))
|
|
+ wexit = WTERMSIG(ret) + 128;
|
|
|
|
out:
|
|
lxc_container_put(c);
|
|
--
|
|
2.33.0
|
|
|