[asterisk-bugs] [JIRA] (ASTERISK-20947) astcanary exits immediately because of wrong pid argument

Matt Jordan (JIRA) noreply at issues.asterisk.org
Fri Jan 18 17:03:35 CST 2013


     [ https://issues.asterisk.org/jira/browse/ASTERISK-20947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Jordan reassigned ASTERISK-20947:
--------------------------------------

    Assignee: Matt Jordan
    
> astcanary exits immediately because of wrong pid argument
> ---------------------------------------------------------
>
>                 Key: ASTERISK-20947
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-20947
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Utilities/astcanary
>    Affects Versions: 10.12.0
>         Environment: all that HAVE_WORKING_FORK
>            Reporter: Jakob Hirsch
>            Assignee: Matt Jordan
>         Attachments: asterisk-10.12.0.astcanary_ppid.diff
>
>
> I wanted to update our machines to 10.12.0 (as an intermediate update
> until we upgrade to 11) and noticed that astcanary is not running any
> more, not even right after starting asterisk, resulting in asterisk to
> reduce it's priority (with a rather lengthy and slightly annoying
> message). This only happens when starting asterisk in the background,
> though.
> With strace I found out that astcanary being started with a wrong ppid:
> {noformat}
> > 29358 18:19:04.138884 execve("/usr/sbin/astcanary", ["astcanary", "/var/run/asterisk/alt.asterisk.c"..., "29356"], [/* 28 vars */] <unfinished ...>
> ...
> > 29358 18:19:04.146543 setpriority(PRIO_PROCESS, 0, 0 <unfinished ...>
> > 29358 18:19:04.146568 <... setpriority resumed> ) = 0
> > 29358 18:19:04.146593 getppid( <unfinished ...>
> > 29358 18:19:04.146633 <... getppid resumed> ) = 29357
> > 29358 18:19:04.146663 exit_group(0)     = ?
> {noformat}
> Notice 29356 vs. 29357.
> The reason is obviously a change made to main/asterisk.c. In 10.11.1,
> ast_mainpid is updated right after daemon(), in 10.12.0 it is updated
> _after_ astcanary is started, so astcanary gets the old pid (the process
> starting doing the daemon()) and therefore exits immediately because it checks the ppid argument against the return value of getppid().
> The easy fix is to update ast_mainpid after daemon(), as in the attached patch.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list