On Mon, Jan 20, 2014 at 03:22:31PM +0800, Qiang Huang wrote: > On 2014/1/19 8:57, Stéphane Graber wrote: > > On Sat, Jan 18, 2014 at 03:00:00PM +0800, Qiang Huang wrote: > >> This is for bug: https://github.com/lxc/lxc/issues/89 > >> > >> When start container with daemon model, the daemon process's > >> father will return back to main in start time, and pidfile > >> is removed then, that's not right. > >> So we store pidfile to lxc_container, and remove it when > >> lxc_container_free. > > > > That one looks wrong to me, removing the pid file on lxc_container_free > > is wrong. We want the pidfile removed when the background lxc-start > > exits, not whenever a random API client flushes the container from > > memory. > > > > With your patch, doing something like: > > - lxc-start -n p1 -d -p /tmp/pid > > - python3 > > import lxc > > p1 = lxc.Container("p1") > > p1 = None > > I'm sorry I'm not family with python, can you explain how this would > happen in real world? Thanks.
In the real world, anything using the API to control an already running backgrounded container with a PID file and that does lxc_container_put once it's done dealing with the container object will cause the PID file to be removed. Actually, even calling lxc-list should cause the PID file to be removed as lxc-list calls list_containers which calls list_defined_containers which in turns iterate through all containers, get their struct and then lxc_container_put them. > > > > > Or the equivalent with any binding, or directly in C, will destroy the > > pid file even though the container is clearly still running. > > I thought when the backgroud lxc-start exits, it's time for container > to free, because there are no other place to do lxc_contaier_get to > hold the container from freeing. > > I must missed something :( , so waiting for your more details. > > -- Stéphane Graber Ubuntu developer http://www.ubuntu.com
signature.asc
Description: Digital signature
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel