This is the strace output (all entries that reference the child
process) from supervisord while doing a start all followed by stop all
from supervisorctl:
11:15:05 clone(child_stack=0,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7f920d5899d0) = 1300
11:15:05 read(11, "2010-15-24 11:15:05 pid 01300 - "..., 131072) = 76
11:15:05 write(14, "2010-15-24 11:15:05 pid 01300 - "..., 76) = 76
11:15:05 read(11, "2010-15-24 11:15:05 pid 01300 - "..., 131072) = 197
11:15:05 write(14, "2010-15-24 11:15:05 pid 01300 - "..., 197) = 197
11:15:05 read(11, "2010-15-24 11:15:05 pid 01300 - "..., 131072) = 118
11:15:05 write(14, "2010-15-24 11:15:05 pid 01300 - "..., 118) = 118
11:15:17 kill(1300, SIGINT) = 0
11:15:27 kill(1300, SIGKILL) = 0
11:15:27 wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGKILL}],
WNOHANG, NULL) = 1300
This is the last two lines in the strace for the child process:
11:15:05 futex(0x7f58e0e6a9e0, FUTEX_WAIT, 1302, NULL
11:15:27 +++ killed by SIGKILL +++
So....the kill(1300, SIGINT) returns success in the supervisord strace,
but is not mirrored on the child process side.
If I send a kill -2 (INT) from the command line for my app running under
supervisor, the signal is received properly. The issue seems to lie
somewhere between supervisord and the application, but I have no idea
where else to look.
Cheers.
On 8/24/2010 10:47 AM, Roger Hoover wrote:
Hmm...you also mind get more information by running strace on
supervisord and see what signal is getting sent.
On Tue, Aug 24, 2010 at 10:17 AM, Dean Banks <connexi...@gmail.com
<mailto:connexi...@gmail.com>> wrote:
I am running supervisor in a terminal using the following in my
supervisord.conf:
loglevel=debug
nodaemon=true
so it should be equivalent to the command line that you suggest.
The logfile excerpt that I included in my initial post was
developed using these options.
Cheers.
On 8/24/2010 9:37 AM, Roger Hoover wrote:
Try running supervisor on the command line in debug mode:
supervisord -n -e debug
On Tue, Aug 24, 2010 at 8:47 AM, Dean Banks <connexi...@gmail.com
<mailto:connexi...@gmail.com>> wrote:
I am using supervisord v3.0a9 to spawn and manage a FastCGI
application that I am writing in C for a linux target. I have
a signal handler that gracefully exits my application when
SIGINT is received. I have verified that the signal handler
works as desired by running the app in a terminal window and
issuing Ctrl-C to exit.
When issuing a "shutdown" command to supervisord (via
supervisorctl), it appears that supervisord is unable to
force the app to exit without invoking SIGKILL:
|2010-08-20 10:02:49,661 INFO waitingfor cse todie
2010-08-20 10:02:52,665 INFO waitingfor cse todie
2010-08-20 10:02:55,669 INFO waitingfor cse todie
2010-08-20 10:02:58,672 INFO waitingfor cse todie
2010-08-20 10:02:59,673 WARN killing'cse' (2031) with SIGKILL
2010-08-20 10:02:59,674 INFO stopped: cse(terminatedby SIGKILL)
|
I have the following in my supervisord.conf file
|stopsignal=INT
|
It seems that my app is not responding to or not receiving
the SIGINT issued by supervisord.
How do I go about debugging the signal passing between
supervisord and my app?
_______________________________________________
Supervisor-users mailing list
Supervisor-users@lists.supervisord.org
<mailto:Supervisor-users@lists.supervisord.org>
http://lists.supervisord.org/mailman/listinfo/supervisor-users
_______________________________________________
Supervisor-users mailing list
Supervisor-users@lists.supervisord.org
http://lists.supervisord.org/mailman/listinfo/supervisor-users