Re: [Pharo-users] What is code 137 / how to gracefully shut down via SIGTERM?
Hi, Well, not so scary.  That's the mac list.  From a not so recent mac with Xcode 7 installed it looks like the below. The good news here is that the common signals have the same numbers.  And how often do you get an SIGXCPU? cheers bruce #define SIGHUP 1    /* hangup */ #define SIGINT 2    /* interrupt */ #define SIGQUIT 3    /* quit */ #define SIGILL 4    /* illegal instruction (not reset when caught) */ #define SIGTRAP 5    /* trace trap (not reset when caught) */ #define SIGABRT 6    /* abort() */ #define SIGPOLL 7    /* pollable event ([XSR] generated, not supported) */ #else  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #define SIGIOT SIGABRT /* compatibility */ #define SIGEMT 7    /* EMT instruction */ #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #define SIGFPE 8    /* floating point exception */ #define SIGKILL 9    /* kill (cannot be caught or ignored) */ #define SIGBUS 10   /* bus error */ #define SIGSEGV 11   /* segmentation violation */ #define SIGSYS 12   /* bad argument to system call */ #define SIGPIPE 13   /* write on a pipe with no one to read it */ #define SIGALRM 14   /* alarm clock */ #define SIGTERM 15   /* software termination signal from kill */ #define SIGURG 16   /* urgent condition on IO channel */ #define SIGSTOP 17   /* sendable stop signal not from tty */ #define SIGTSTP 18   /* stop signal from tty */ #define SIGCONT 19   /* continue a stopped process */ #define SIGCHLD 20   /* to parent on child stop or exit */ #define SIGTTIN 21   /* to readers pgrp upon background tty read */ #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) #define SIGIO  23   /* input/output possible signal */ #endif #define SIGXCPU 24   /* exceeded CPU time limit */ #define SIGXFSZ 25   /* exceeded file size limit */ #define SIGVTALRM 26  /* virtual time alarm */ #define SIGPROF 27   /* profiling time alarm */ #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) #define SIGWINCH 28   /* window size changes */ #define SIGINFO 29   /* information request */ #endif #define SIGUSR1 30   /* user defined signal 1 */ #define SIGUSR2 31   /* user defined signal 2 */
Bruce O'Neel wrote:
Hi,
Posix requires that if the process is killed the return status is greater than 128.
What is convention on linux systems is that if the process is sent a signal then the signal number is added to 128. Therefore 137 is SIGKILL (kill -9). SIGTERM is 143, SIGABRT is 134, SIGSEGV is 139, and so on. I've not seen an exception to this but there could be.
Signals off of my closest linux system look like:
#define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SIGILL 4 #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT 6 #define SIGBUS 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGUSR1 10 #define SIGSEGV 11 #define SIGUSR2 12 #define SIGPIPE 13 #define SIGALRM 14 #define SIGTERM 15
Scary, because Esteban's sigtrapping package has them defined a bit differently:
{ #category : #'class initialization' } POSIXSignal class >> initialize [ SIGHUP := 1. SIGINT := 2. SIGQUIT := 3. SIGILL := 4. SIGTRAP := 5. SIGABRT := 6. SIGPOLL := 7. SIGIOT := SIGABRT. SIGEMT := 7. SIGFPE := 8. SIGKILL := 9. SIGBUS := 10. SIGSEGV := 11. SIGSYS := 12. SIGPIPE := 13. SIGALRM := 14. SIGTERM := 15. SIGURG := 16. SIGSTOP := 17. SIGTSTP := 18. SIGCONT := 19. SIGCHLD := 20. SIGTTIN := 21. SIGTTOU := 22. SIGIO := 23. SIGXCPU := 24. SIGXFSZ := 25. SIGVTALRM := 26. SIGPROF := 27. SIGWINCH := 28. SIGINFO := 29. SIGUSR1 := 30. SIGUSR2 := 31. ]
Bruce O'Neel wrote:
Hi,
Well, not so scary. That's the mac list. From a not so recent mac with Xcode 7 installed it looks like the below.
The good news here is that the common signals have the same numbers. And how often do you get an SIGXCPU?
I was think of SIGUSR1, can be used to useful things (IIRC nginx or apache reload when sent), but that one is not common. :-( Of course, SIGTERM/SIGINT/SIGHUP are, so, yes, these are most important. Herby
cheers
bruce
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGABRT 6 /* abort() */
#if (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE))
#define SIGPOLL 7 /* pollable event ([XSR] generated, not supported) */
#else /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define SIGIOT SIGABRT /* compatibility */
#define SIGEMT 7 /* EMT instruction */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
#if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
#define SIGIO 23 /* input/output possible signal */
#endif
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
#define SIGWINCH 28 /* window size changes */
#define SIGINFO 29 /* information request */
#endif
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
/31 October 2017 14:56 Herby VojÄÃk <herby@mailbox.sk> wrote:/
Bruce O'Neel wrote: > Hi, > > Posix requires that if the process is killed the return status is > greater than 128. > > What is convention on linux systems is that if the process is sent a > signal then the signal number is added to 128. Therefore 137 is SIGKILL > (kill -9). SIGTERM is 143, SIGABRT is 134, SIGSEGV is 139, and so on. > I've not seen an exception to this but there could be. > > Signals off of my closest linux system look like: > > #define SIGHUP 1 > #define SIGINT 2 > #define SIGQUIT 3 > #define SIGILL 4 > #define SIGTRAP 5 > #define SIGABRT 6 > #define SIGIOT 6 > #define SIGBUS 7 > #define SIGFPE 8 > #define SIGKILL 9 > #define SIGUSR1 10 > #define SIGSEGV 11 > #define SIGUSR2 12 > #define SIGPIPE 13 > #define SIGALRM 14 > #define SIGTERM 15
Scary, because Esteban's sigtrapping package has them defined a bit differently:
{ #category : #'class initialization' } POSIXSignal class >> initialize [ SIGHUP := 1. SIGINT := 2. SIGQUIT := 3. SIGILL := 4. SIGTRAP := 5. SIGABRT := 6. SIGPOLL := 7. SIGIOT := SIGABRT. SIGEMT := 7. SIGFPE := 8. SIGKILL := 9. SIGBUS := 10. SIGSEGV := 11. SIGSYS := 12. SIGPIPE := 13. SIGALRM := 14. SIGTERM := 15. SIGURG := 16. SIGSTOP := 17. SIGTSTP := 18. SIGCONT := 19. SIGCHLD := 20. SIGTTIN := 21. SIGTTOU := 22. SIGIO := 23. SIGXCPU := 24. SIGXFSZ := 25. SIGVTALRM := 26. SIGPROF := 27. SIGWINCH := 28. SIGINFO := 29. SIGUSR1 := 30. SIGUSR2 := 31. ]
participants (2)
-
Bruce O'Neel -
Herby VojÄÃk