<div dir="ltr">Using a checkpointed file system doesn't seem to make a difference.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 24, 2015 at 8:26 AM, Ross Boucher <span dir="ltr"><<a href="mailto:rboucher@gmail.com" target="_blank">rboucher@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The containers are started from the same image and don't write to the filesystem (though I suppose something somewhere could be writing without my knowledge).<div><br></div><div>My next step was to use docker commit to checkpoint the filesystem as well, and then create the new container based on that image. I'll try that and see if it changes anything, even though I don't expect it to.</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 24, 2015 at 8:23 AM, Pavel Emelyanov <span dir="ltr"><<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On 04/24/2015 06:12 PM, Ross Boucher wrote:<br>
> Yeah, but I think there are other problems as well. I'm trying the same restore process with<br>
> a more complex program and seeing odd behavior: the process gets restored, but it seems to be<br>
> hung. I have a thread in this program that just prints in a loop every second and it never<br>
> prints after being restored (again, this works fine if I restore into the same container).<br>
<br>
</span>Hm... How do you make sure the filesystem of the container you restore into equals<br>
the filesystem of the container you dumped from?<br>
<br>
The thing is -- if at least one byte in some library changes, criu doesn't notice it<br>
(as it doesn't mess with filesystems) and maps them back into processes. They _can_<br>
break due to this. E.g. if you have prelink running in container, it can make vary<br>
nasty stuff :)<br>
<span><font color="#888888"><br>
-- Pavel<br>
</font></span><span><br>
> On Fri, Apr 24, 2015 at 6:59 AM, Pavel Emelyanov <<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> <mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>>> wrote:<br>
><br>
> On 04/24/2015 04:47 PM, Ross Boucher wrote:<br>
> > inherit_fd is being used -- this example works fine if I restore to the same container,<br>
> > it's only breaking now that I'm attempting to restore into a completely different container.<br>
><br>
> So the pipe doesn't get inherited when you restore into different container?<br>
><br>
</span><div><div>> > On Fri, Apr 24, 2015 at 4:50 AM, Pavel Emelyanov <<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> <mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>> <mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> <mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>>>> wrote:<br>
> ><br>
> > On 04/24/2015 12:11 AM, Ross Boucher wrote:<br>
> > > Another update: I was intrigued by the exit code (which implies SIGPIPE?), since the docker process<br>
> > > I was running was indeed piping:<br>
> > ><br>
> > > /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 3; done'<br>
> > ><br>
> > > I tried the same process of checkpointing in one container and restoring to another by writing to a file instead:<br>
> > ><br>
> > > /bin/sh -c 'i=0; while true; do echo $i > /tmp/foo; i=$(expr $i + 1); sleep 3; done'<br>
> > ><br>
> > > And this worked correctly! So I've narrowed it done some more, and I'll continue to look into it.<br>
> ><br>
> > If these are pipes indeed (docker terminals?) then the --inherit-fd option should be used.<br>
> > Saied (from Google) did some work doing this for docker+criu, he can shed more light, but<br>
> > he's on vacation right now :)<br>
> ><br>
> > -- Pavel<br>
> ><br>
> ><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>