<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>I mean --sbs and to look from parallel console on processes states before dump
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>От:</b> Andrey Vagin<br>
<b>Отправлено:</b> 13 апреля 2017 г. 23:28:42<br>
<b>Кому:</b> Kirill Tkhai<br>
<b>Копия:</b> criu@openvz.org; Pavel Tikhomirov; Pavel Emelianov<br>
<b>Тема:</b> Re: [PATCH v3 00/55] Nested pid namespaces support</font>
<div>&nbsp;</div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On Thu, Apr 13, 2017 at 12:06:59PM &#43;0300, Kirill Tkhai wrote:<br>
&gt; On 13.04.2017 02:39, Andrei Vagin wrote:<br>
&gt; &gt; On Tue, Apr 11, 2017 at 03:10:27PM &#43;0300, Kirill Tkhai wrote:<br>
&gt; &gt;&gt; On 11.04.2017 07:26, Andrei Vagin wrote:<br>
&gt; &gt;&gt;&gt; [root@fc24 criu]# python test/zdtm.py run -t zdtm/static/pidns00 --iter 1<br>
&gt; &gt;&gt;&gt; Checking feature ns_pid<br>
&gt; &gt;&gt;&gt; === Run 1/1 ================ zdtm/static/pidns00<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; ======================== Run zdtm/static/pidns00 in ns =========================<br>
&gt; &gt;&gt;&gt; make[1]: Nothing to be done for 'default'.<br>
&gt; &gt;&gt;&gt; Start test<br>
&gt; &gt;&gt;&gt; Test is SUID<br>
&gt; &gt;&gt;&gt; make[1]: Nothing to be done for 'default'.<br>
&gt; &gt;&gt;&gt; ./pidns00 --pidfile=pidns00.pid --outfile=pidns00.out<br>
&gt; &gt;&gt;&gt; Run criu dump<br>
&gt; &gt;&gt;&gt; Run criu restore<br>
&gt; &gt;&gt;&gt; ################ Test zdtm/static/pidns00 FAIL at CRIU restore #################<br>
&gt; &gt;&gt;&gt; ##################################### FAIL #####################################<br>
&gt; &gt;&gt;&gt; [root@fc24 criu]# dmesg -c<br>
&gt; &gt;&gt;&gt; [439441.751893] traps: pidns00[27458] general protection ip:7f9b3183d642 sp:7ffc2d9587c0 error:0<br>
&gt; &gt;&gt;&gt; [439441.751900]&nbsp; in libc.so.6[7f9b31806000&#43;1bd000]<br>
&gt; &gt;&gt;&gt; [439441.768416] systemd-journald[13102]: Successfully sent stream file descriptor to service manager.<br>
&gt; &gt;&gt;&gt; [439441.886503] systemd-journald[13102]: Compressed data object 1176 -&gt; 652 using LZ4<br>
&gt; &gt;&gt;&gt; [439441.887834] systemd-journald[13102]: Compressed data object 1658 -&gt; 653 using LZ4<br>
&gt; &gt;&gt;&gt; [439441.889093] systemd-journald[13102]: Compressed data object 3128 -&gt; 1774 using LZ4<br>
&gt; &gt;&gt;&gt; [439442.037519] criu[27482]: segfault at 12 ip 000000000047e4d3 sp 00007ffc190820a8 error 4 in criu[400000&#43;117000]<br>
&gt; &gt;&gt;&gt; [439442.058973] systemd-journald[13102]: Successfully sent stream file descriptor to service manager.<br>
&gt; &gt;&gt;&gt; [439442.211795] systemd-journald[13102]: Compressed data object 1150 -&gt; 665 using LZ4<br>
&gt; &gt;&gt;&gt; [439442.213101] systemd-journald[13102]: Compressed data object 5493 -&gt; 1619 using LZ4<br>
&gt; &gt;&gt;&gt; [root@fc24 criu]# <br>
&gt; &gt;&gt;&gt; [root@fc24 criu]# git diff<br>
&gt; &gt;&gt;&gt; diff --git a/test/zdtm/static/pidns00.c b/test/zdtm/static/pidns00.c<br>
&gt; &gt;&gt;&gt; index e3ed74b..e86d488 100644<br>
&gt; &gt;&gt;&gt; --- a/test/zdtm/static/pidns00.c<br>
&gt; &gt;&gt;&gt; &#43;&#43;&#43; b/test/zdtm/static/pidns00.c<br>
&gt; &gt;&gt;&gt; @@ -54,6 &#43;54,11 @@ futex_t *futex;<br>
&gt; &gt;&gt;&gt;&nbsp; <br>
&gt; &gt;&gt;&gt;&nbsp; int child(void)<br>
&gt; &gt;&gt;&gt;&nbsp; {<br>
&gt; &gt;&gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int fd = open(&quot;/proc/self/ns/pid&quot;, O_RDONLY);<br>
&gt; &gt;&gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unshare(CLONE_NEWPID);<br>
&gt; &gt;&gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fork())<br>
&gt; &gt;&gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setns(fd, CLONE_NEWPID);<br>
&gt; &gt;&gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(fd);<br>
&gt; &gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; futex_wait_while_lt(futex, 1);<br>
&gt; &gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>
&gt; &gt;&gt;&gt;&nbsp; }<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; The below fixes the issue. Thanks for finding this!<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; diff --git a/criu/pstree.c b/criu/pstree.c<br>
&gt; &gt;&gt; index b2703dd01..d032957ae 100644<br>
&gt; &gt;&gt; --- a/criu/pstree.c<br>
&gt; &gt;&gt; &#43;&#43;&#43; b/criu/pstree.c<br>
&gt; &gt;&gt; @@ -844,7 &#43;844,7 @@ int get_free_pid(struct ns_id *ns)<br>
&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node = rb_next(&amp;prev-&gt;ns[level].node);<br>
&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (node == NULL)<br>
&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return pid;<br>
&gt; &gt;&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next = rb_entry(node, struct pid, ns[0].node);<br>
&gt; &gt;&gt; &#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next = rb_entry(node, struct pid, ns[level].node);<br>
&gt; &gt; <br>
&gt; &gt; Now criu restore hangs<br>
&gt; &gt; <br>
&gt; &gt;&nbsp; 8270 pts/0&nbsp;&nbsp;&nbsp; T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ python test/zdtm.py run -t zdtm/static/pidns00<br>
&gt; &gt;&nbsp; 8281 pts/0&nbsp;&nbsp;&nbsp; T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ./zdtm_ct zdtm.py<br>
&gt; &gt;&nbsp; 8282 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ python2 zdtm.py<br>
&gt; &gt;&nbsp; 8284 pts/0&nbsp;&nbsp;&nbsp; T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ python2 zdtm.py<br>
&gt; &gt;&nbsp; 8343 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.pid --ro<br>
&gt; &gt;&nbsp; 8348 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.pid
<br>
&gt; &gt;&nbsp; 8361 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.<br>
&gt; &gt;&nbsp; 8367 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.<br>
&gt; &gt;&nbsp; 8369 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.<br>
&gt; &gt;&nbsp; 8370 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.<br>
&gt; &gt;&nbsp; 8349 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.pid
<br>
&gt; &gt;&nbsp; 8362 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidns00.<br>
&gt; &gt;&nbsp; 8363 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidn<br>
&gt; &gt;&nbsp; 8366 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/<br>
&gt; &gt;&nbsp; 8364 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidn<br>
&gt; &gt;&nbsp; 8365 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/pidn<br>
&gt; &gt;&nbsp; 8368 pts/0&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ../criu/criu restore -o restore.log -D dump/zdtm/static/pidns00/29/1 -v4 --pidfile /root/git/criu/test/zdtm/static/<br>
&gt; &gt;&nbsp; 8371 pts/0&nbsp;&nbsp;&nbsp; R&#43;&nbsp;&nbsp;&nbsp;&nbsp; 0:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \_ ps axf<br>
&gt; <br>
&gt; Could you start the test with --sbs? I suppose, zombies are there for some reasons, and they are not appropriate dumped.<br>
<br>
--sbs doesn't help, I tried to wait a few seconds between each step.<br>
<br>
I run pidns00 with the next patch:<br>
diff --git a/test/zdtm/static/pidns00.c b/test/zdtm/static/pidns00.c<br>
index e3ed74b..e86d488 100644<br>
--- a/test/zdtm/static/pidns00.c<br>
&#43;&#43;&#43; b/test/zdtm/static/pidns00.c<br>
@@ -54,6 &#43;54,11 @@ futex_t *futex;<br>
&nbsp;<br>
&nbsp;int child(void)<br>
&nbsp;{<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int fd = open(&quot;/proc/self/ns/pid&quot;, O_RDONLY);<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unshare(CLONE_NEWPID);<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fork())<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setns(fd, CLONE_NEWPID);<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(fd);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; futex_wait_while_lt(futex, 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>
&nbsp;}<br>
<br>
</div>
</span></font>
</body>
</html>