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

Reply via email to