# # # patch "testlib.lua" # from [775d3728478776f408c362c2ae52b66ffa359f67] # to [ba75bdd7fe200aa69793f25f659b4d4abe91527e] # # patch "unix/process.cc" # from [09415276d4a9ac2c41def3e186d128e721f9fdd4] # to [c7944205755f6809fdf33ead5945253159b68648] # ============================================================ --- testlib.lua 775d3728478776f408c362c2ae52b66ffa359f67 +++ testlib.lua ba75bdd7fe200aa69793f25f659b4d4abe91527e @@ -669,6 +669,9 @@ function bg(torun, ret, stdout, stderr, local res obj.retval, res = timed_wait(obj.pid, timeout) if (res == -1) then + if (obj.retval ~= 0) then + L(locheader(), "error in timed_wait ", obj.retval, "\n") + end kill(obj.pid, 15) -- TERM obj.retval, res = timed_wait(obj.pid, 2) if (res == -1) then ============================================================ --- unix/process.cc 09415276d4a9ac2c41def3e186d128e721f9fdd4 +++ unix/process.cc c7944205755f6809fdf33ead5945253159b68648 @@ -241,6 +241,7 @@ int process_wait(pid_t pid, int *res, in r = waitpid(pid, &status, flags); if (r == -1) { + *res = errno; if (errno == EINTR) { timeout++; @@ -253,8 +254,11 @@ int process_wait(pid_t pid, int *res, in if (r == 0 && timeout > 0) process_sleep(1); } - if ((r == 0) || (r == -1)) - return -1; + if (r == 0) + { + *res = 0; + return -1; + } if (WIFEXITED(status)) *res = WEXITSTATUS(status); else