<div dir="ltr">Alright, indeed interesting, I've dropped exit_value and used the error_num instead. V3 is much simpler.<div><br></div><div>Thanks Serge.</div><div><br></div><div><div>Signed-off-by: Rodrigo Sampaio Vaz <<a href="mailto:rodrigo@heroku.com">rodrigo@heroku.com</a>></div>
<div>---</div><div><br></div><div><div>diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c</div><div>index 1d8145f..03ce079 100644</div><div>--- a/src/lxc/lxc_start.c</div><div>+++ b/src/lxc/lxc_start.c</div><div>@@ -336,6 +336,9 @@ int main(int argc, char *argv[])</div>
<div> <span class="" style="white-space:pre">                  </span>ERROR("To get more details, run the container in foreground mode.");</div><div> <span class="" style="white-space:pre">           </span>ERROR("Additional information can be obtained by setting the "</div>
<div> <span class="" style="white-space:pre">          </span>      "--logfile and --log-priority options.");</div><div>+        err = c->error_num;</div><div>+        lxc_container_put(c);</div><div>+        return err;</div>
<div> <span class="" style="white-space:pre">  </span>}</div><div> </div><div> out:</div><div>diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c</div><div>index 62e38d7..e2a7a68 100644</div><div>--- a/src/lxc/lxccontainer.c</div>
<div>+++ b/src/lxc/lxccontainer.c</div><div>@@ -669,6 +669,7 @@ static bool lxcapi_start(struct lxc_container *c, int useinit, char * const argv</div><div> reboot:</div><div> <span class="" style="white-space:pre">    </span>conf->reboot = 0;</div>
<div> <span class="" style="white-space:pre">  </span>ret = lxc_start(c->name, argv, conf, c->config_path);</div><div>+    c->error_num = ret;</div><div> </div><div> <span class="" style="white-space:pre"> </span>if (conf->reboot) {</div>
<div> <span class="" style="white-space:pre">          </span>INFO("container requested reboot");</div></div><div><br></div></div><div>---</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 3, 2014 at 3:21 PM, Serge Hallyn <span dir="ltr"><<a href="mailto:serge.hallyn@ubuntu.com" target="_blank">serge.hallyn@ubuntu.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">Quoting Rodrigo Vaz (<a href="mailto:rodrigo@heroku.com">rodrigo@heroku.com</a>):<br>
> Hi Serge,<br>
><br>
> Thanks for the comment and it makes a lot of sense, here is the V2 patch.<br>
<br>
</div>Thanks, just one more comment,<br>
<div class=""><br>
> Signed-off-by: Rodrigo Sampaio Vaz <<a href="mailto:rodrigo@heroku.com">rodrigo@heroku.com</a>><br>
> ---<br>
>  src/lxc/lxc_start.c    | 2 ++<br>
>  src/lxc/lxccontainer.c | 1 +<br>
>  src/lxc/lxccontainer.h | 3 +++<br>
>  3 files changed, 6 insertions(+)<br>
><br>
> diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c<br>
> index 1d8145f..6212422 100644<br>
> --- a/src/lxc/lxc_start.c<br>
> +++ b/src/lxc/lxc_start.c<br>
> @@ -336,6 +336,8 @@ int main(int argc, char *argv[])<br>
>   ERROR("To get more details, run the container in foreground mode.");<br>
>   ERROR("Additional information can be obtained by setting the "<br>
>        "--logfile and --log-priority options.");<br>
> +        lxc_container_put(c);<br>
> +        return c->exit_value;<br>
<br>
</div>You should grab the error value before doing the lxc_container_put().<br>
So perhaps<br>
<br>
        err = c->exit_value;<br>
        lxc_container_put(c);<br>
        return err;<br>
<div class=""><br>
>   }<br>
><br>
>  out:<br>
> diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c<br>
> index 62e38d7..cb26fff 100644<br>
> --- a/src/lxc/lxccontainer.c<br>
> +++ b/src/lxc/lxccontainer.c<br>
> @@ -669,6 +669,7 @@ static bool lxcapi_start(struct lxc_container *c, int<br>
> useinit, char * const argv<br>
>  reboot:<br>
>   conf->reboot = 0;<br>
>   ret = lxc_start(c->name, argv, conf, c->config_path);<br>
> +    c->exit_value = ret;<br>
><br>
>   if (conf->reboot) {<br>
>   INFO("container requested reboot");<br>
> diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h<br>
> index 1d0628a..0fb8eb1 100644<br>
> --- a/src/lxc/lxccontainer.h<br>
> +++ b/src/lxc/lxccontainer.h<br>
> @@ -106,6 +106,9 @@ struct lxc_container {<br>
>   /*! Last error number */<br>
>   int error_num;<br>
<br>
</div>(Hm, this is intersting, error_num shows up nowhere else in the source.)<br>
<div class="im HOEnZb"><br>
><br>
> +    /*! Container exit code */<br>
> +    int exit_value;<br>
> +<br>
>   /*! Whether container wishes to be daemonized */<br>
>   bool daemonize;<br>
><br>
> --<br>
> 2.0.1<br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
lxc-devel mailing list<br>
<a href="mailto:lxc-devel@lists.linuxcontainers.org">lxc-devel@lists.linuxcontainers.org</a><br>
<a href="http://lists.linuxcontainers.org/listinfo/lxc-devel" target="_blank">http://lists.linuxcontainers.org/listinfo/lxc-devel</a><br>
</div></div></blockquote></div><br></div>