<div dir="ltr">Using a checkpointed file system doesn&#39;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">&lt;<a href="mailto:rboucher@gmail.com" target="_blank">rboucher@gmail.com</a>&gt;</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&#39;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&#39;ll try that and see if it changes anything, even though I don&#39;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">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</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>
&gt; Yeah, but I think there are other problems as well. I&#39;m trying the same restore process with<br>
&gt; a more complex program and seeing odd behavior: the process gets restored, but it seems to be<br>
&gt; hung. I have a thread in this program that just prints in a loop every second and it never<br>
&gt; 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&#39;t notice it<br>
(as it doesn&#39;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>
&gt; On Fri, Apr 24, 2015 at 6:59 AM, Pavel Emelyanov &lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> &lt;mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     On 04/24/2015 04:47 PM, Ross Boucher wrote:<br>
&gt;     &gt; inherit_fd is being used -- this example works fine if I restore to the same container,<br>
&gt;     &gt; it&#39;s only breaking now that I&#39;m attempting to restore into a completely different container.<br>
&gt;<br>
&gt;     So the pipe doesn&#39;t get inherited when you restore into different container?<br>
&gt;<br>
</span><div><div>&gt;     &gt; On Fri, Apr 24, 2015 at 4:50 AM, Pavel Emelyanov &lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> &lt;mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt; &lt;mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a> &lt;mailto:<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;&gt;&gt; wrote:<br>
&gt;     &gt;<br>
&gt;     &gt;     On 04/24/2015 12:11 AM, Ross Boucher wrote:<br>
&gt;     &gt;     &gt; Another update: I was intrigued by the exit code (which implies SIGPIPE?), since the docker process<br>
&gt;     &gt;     &gt; I was running was indeed piping:<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt;     /bin/sh -c &#39;i=0; while true; do echo $i; i=$(expr $i + 1); sleep 3; done&#39;<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt; I tried the same process of checkpointing in one container and restoring to another by writing to a file instead:<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt;     /bin/sh -c &#39;i=0; while true; do echo $i &gt; /tmp/foo; i=$(expr $i + 1); sleep 3; done&#39;<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt; And this worked correctly! So I&#39;ve narrowed it done some more, and I&#39;ll continue to look into it.<br>
&gt;     &gt;<br>
&gt;     &gt;     If these are pipes indeed (docker terminals?) then the --inherit-fd option should be used.<br>
&gt;     &gt;     Saied (from Google) did some work doing this for docker+criu, he can shed more light, but<br>
&gt;     &gt;     he&#39;s on vacation right now :)<br>
&gt;     &gt;<br>
&gt;     &gt;     -- Pavel<br>
&gt;     &gt;<br>
&gt;     &gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>