[PATCH weston 2/2 v3] weston-launch: return better value if weston dies because of a signal

Kristian Høgsberg hoegsberg at gmail.com
Tue Mar 19 11:29:07 PDT 2013


On Sun, Mar 10, 2013 at 03:14:01PM +0100, Philipp Brüschweiler wrote:
> Before this commit, weston-launch returned 0 if weston was killed by a
> signal. This makes it hard to automatically test weston by using
> weston-launch, as there is no way to know why weston was terminated.
> 
> This commit makes weston-launch return 10+N instead, where N is the code
> of the signal that terminated weston. 10 was chosen because it allows a
> script to distinguish it from the case that weston-launch itself was
> killed by a signal (128+N), and does not overlap the standard exit codes
> defined in sysexits.h.
> 
> Partial fix for https://bugs.freedesktop.org/show_bug.cgi?id=60935. I
> can't reproduce the SIGHUP using the fbdev backend.
> 
> v3: better commit message.

Thanks, much better, using 10+N makes sense.  Committed.

Kristian

> ---
>  src/weston-launch.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/src/weston-launch.c b/src/weston-launch.c
> index 98f0111..407d135 100644
> --- a/src/weston-launch.c
> +++ b/src/weston-launch.c
> @@ -420,7 +420,7 @@ static int
>  handle_signal(struct weston_launch *wl)
>  {
>  	struct signalfd_siginfo sig;
> -	int pid, status;
> +	int pid, status, ret;
>  
>  	if (read(wl->signalfd, &sig, sizeof sig) != sizeof sig) {
>  		error(0, errno, "reading signalfd failed");
> @@ -432,7 +432,19 @@ handle_signal(struct weston_launch *wl)
>  		pid = waitpid(-1, &status, 0);
>  		if (pid == wl->child) {
>  			wl->child = 0;
> -			quit(wl, WIFEXITED(status) ? WEXITSTATUS(status) : 0);
> +			if (WIFEXITED(status))
> +				ret = WEXITSTATUS(status);
> +			else if (WIFSIGNALED(status))
> +				/*
> +				 * If weston dies because of signal N, we
> +				 * return 10+N. This is distinct from
> +				 * weston-launch dying because of a signal
> +				 * (128+N).
> +				 */
> +				ret = 10 + WTERMSIG(status);
> +			else
> +				ret = 0;
> +			quit(wl, ret);
>  		}
>  		break;
>  	case SIGTERM:
> -- 
> 1.8.1.5
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list