mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 06:06:57 +00:00
wait_on_damonized-start: wait only on the pid we want
Otherwise we can reap another thread's forked pid. Changelog: Per Dwight's suggestion, use pid_t for argument. Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by: Dwight Engen <dwight.engen@oracle.com> Acked-by: S.Çağlar Onur <caglar@10ur.org>
This commit is contained in:
parent
2d834aa807
commit
03f064ff74
@ -491,7 +491,7 @@ static bool lxcapi_wait(struct lxc_container *c, const char *state, int timeout)
|
||||
}
|
||||
|
||||
|
||||
static bool wait_on_daemonized_start(struct lxc_container *c)
|
||||
static bool wait_on_daemonized_start(struct lxc_container *c, int pid)
|
||||
{
|
||||
/* we'll probably want to make this timeout configurable? */
|
||||
int timeout = 5, ret, status;
|
||||
@ -500,7 +500,7 @@ static bool wait_on_daemonized_start(struct lxc_container *c)
|
||||
* our child is going to fork again, then exit. reap the
|
||||
* child
|
||||
*/
|
||||
ret = wait(&status);
|
||||
ret = waitpid(pid, &status, 0);
|
||||
if (ret == -1 || !WIFEXITED(status) || WEXITSTATUS(status) != 0)
|
||||
DEBUG("failed waiting for first dual-fork child");
|
||||
return lxcapi_wait(c, "RUNNING", timeout);
|
||||
@ -607,7 +607,7 @@ static bool lxcapi_start(struct lxc_container *c, int useinit, char * const argv
|
||||
return false;
|
||||
}
|
||||
if (pid != 0)
|
||||
return wait_on_daemonized_start(c);
|
||||
return wait_on_daemonized_start(c, pid);
|
||||
|
||||
process_unlock(); // we're no longer sharing
|
||||
/* second fork to be reparented by init */
|
||||
|
Loading…
Reference in New Issue
Block a user