[PATCH v2] Correctly report nscd child process status
Siddhesh Poyarekar
siddhesh@redhat.com
Fri Jun 27 18:02:00 GMT 2014
Thanks, I have committed this now.
Siddhesh
On Fri, Jun 27, 2014 at 09:25:16AM +0200, Arjun Shankar wrote:
> The nscd parent process returns the result of a `wait' call rather than
> the exit status of the child it waits for. These two aren't exactly the
> same. In my case (and probably on most machines), the exit status is in
> the 2nd LSB of the result of `wait', and so:
>
> e.g. if the nscd child process returns 1, the parent returns 1 << 8,
> which Bash happily reports as 0.
>
> This patch should fix that.
>
> ChangeLog:
>
> 2014-06-27 Arjun Shankar <arjun.is@lostca.se>
>
> [BZ #17092]
> * nscd/nscd.c (monitor_child): Fix how status reported by
> 'wait' is interpreted.
> ---
> nscd/nscd.c | 22 +++++++++++++---------
> 1 file changed, 13 insertions(+), 9 deletions(-)
>
> Changes in v2:
> - remove periods at the end of error messages
> diff --git a/nscd/nscd.c b/nscd/nscd.c
> index 3dd1135..7131ead 100644
> --- a/nscd/nscd.c
> +++ b/nscd/nscd.c
> @@ -612,21 +612,25 @@ monitor_child (int fd)
> method, like a segfault. */
> if (ret <= 0 || child_ret != 0)
> {
> - int err = wait (&child_ret);
> + int status;
> + int err = wait (&status);
>
> if (err < 0)
> {
> - fprintf (stderr, _("wait failed"));
> + fprintf (stderr, _("'wait' failed\n"));
> return 1;
> }
>
> - fprintf (stderr, _("child exited with status %d"),
> - WEXITSTATUS (child_ret));
> - if (WIFSIGNALED (child_ret))
> - fprintf (stderr, _(", terminated by signal %d.\n"),
> - WTERMSIG (child_ret));
> - else
> - fprintf (stderr, ".\n");
> + if (WIFEXITED (status))
> + {
> + child_ret = WEXITSTATUS (status);
> + fprintf (stderr, _("child exited with status %d\n"), child_ret);
> + }
> + if (WIFSIGNALED (status))
> + {
> + child_ret = WTERMSIG (status);
> + fprintf (stderr, _("child terminated by signal %d\n"), child_ret);
> + }
> }
>
> /* We have the child status, so exit with that code. */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20140627/2fa15eb3/attachment.sig>
More information about the Libc-alpha
mailing list