From 1407b3355849be7cc06a0654973a6a8b0fa6c00c Mon Sep 17 00:00:00 2001 From: Catherine Date: Fri, 1 May 2026 11:22:38 +0000 Subject: [PATCH] Ensure only non-truncating values are returned from `main()`. POSIX allows any `int` value to be returned but specifies that only the low 8 bits are available in some contexts: https://pubs.opengroup.org/onlinepubs/9699919799/functions/_exit.html For reasons that aren't entirely clear, WASI requires the value to be in range [0;126), and this is enforced with an assertion at runtime level in Wasmtime. This should probably be fixed in Wasmtime but until it is done there doesn't seem to be any harm in returning `125` instead of `-1`. This also removes any discrepancy due to truncation. --- common/kernel/command.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/kernel/command.cc b/common/kernel/command.cc index 5493173c..39ad1cea 100644 --- a/common/kernel/command.cc +++ b/common/kernel/command.cc @@ -748,7 +748,7 @@ int CommandHandler::exec() { try { if (!parseOptions()) - return -1; + return 125; if (executeBeforeContext()) return 0; @@ -764,7 +764,7 @@ int CommandHandler::exec() return rc; } catch (log_execution_error_exception) { printFooter(); - return -1; + return 125; } }