#define CLONE_NEWCGROUP 0x02000000
#endif /* !defined(CLONE_NEWCGROUP) */
-extern const char *sys_sigabbrev[];
-
-static const char *subprocSigName(int signo)
-{
- static __thread char sigName[1024];
- if (signo >= __SIGRTMIN && signo <= SIGRTMAX) {
- snprintf(sigName, sizeof(sigName), "SIG%d=__RTMIN+%d", signo, signo - __SIGRTMIN);
- } else if (signo >= 0 && signo <= SIGSYS) {
- snprintf(sigName, sizeof(sigName), "SIG%s", sys_sigabbrev[signo]);
- } else {
- snprintf(sigName, sizeof(sigName), "UNKNOWN-%d", signo);
- }
- return sigName;
-}
-
static const char *subprocCloneFlagsToStr(uintptr_t flags)
{
static __thread char cloneFlagName[1024];
utilSSnPrintf(cloneFlagName, sizeof(cloneFlagName), "%#tx|",
flags & ~(knownFlagMask));
}
- utilSSnPrintf(cloneFlagName, sizeof(cloneFlagName), "%s", subprocSigName(flags & CSIGNAL));
+ utilSSnPrintf(cloneFlagName, sizeof(cloneFlagName), "%s", utilSigName(flags & CSIGNAL));
return cloneFlagName;
}
}
}
if (WIFSIGNALED(status)) {
- LOG_I("PID: %d (%s) terminated with signal: %d, (PIDs left: %d)",
- si.si_pid, remote_txt, WTERMSIG(status),
- subprocCount(nsjconf) - 1);
+ LOG_I
+ ("PID: %d (%s) terminated with signal: %s (%d), (PIDs left: %d)",
+ si.si_pid, remote_txt, utilSigName(WTERMSIG(status)),
+ WTERMSIG(status), subprocCount(nsjconf) - 1);
subprocRemove(nsjconf, si.si_pid);
rv = 100 + WTERMSIG(status);
}
}
if (WIFSIGNALED(status)) {
int exit_signal = WTERMSIG(status);
- LOG_W("PID %d killed by a signal: %d (%s)", pid, exit_signal,
- strsignal(exit_signal));
+ LOG_W("PID %d killed by signal: %d (%s)", pid, exit_signal,
+ utilSigName(exit_signal));
return 2;
}
LOG_W("Unknown exit status: %d", status);
#include <errno.h>
#include <fcntl.h>
#include <pthread.h>
+#include <signal.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
rndX = a * rndX + c;
return rndX;
}
+
+extern const char *sys_sigabbrev[];
+static __thread char arch_signame[32];
+
+const char *utilSigName(int signo)
+{
+ if (signo < 0 || signo > _NSIG) {
+ snprintf(arch_signame, sizeof(arch_signame), "UNKNOWN-%d", signo);
+ return arch_signame;
+ }
+ if (signo > __SIGRTMIN) {
+ snprintf(arch_signame, sizeof(arch_signame), "SIG%d-RTMIN+%d", signo,
+ signo - __SIGRTMIN);
+ return arch_signame;
+ }
+ snprintf(arch_signame, sizeof(arch_signame), "SIG%s", sys_sigabbrev[signo]);
+ return arch_signame;
+}