[CRIU] Criu issue : Error parsing proc fdinfo
Andrew Vagin
avagin at parallels.com
Wed Jan 22 05:17:03 PST 2014
Hi Smain,
On Wed, Jan 22, 2014 at 10:06:12AM +0100, Smain Kahlouch wrote:
> Hello all and thank you for your answer.
>
> my "unshare" version doesn't support the same options as you
You can update util-linux from
https://git.kernel.org/cgit/utils/util-linux/util-linux.git/
BTW: Is your container is executed in a separate user namespace?
>
> unshare --help
>
> Usage:
> unshare [options] <program> [args...]
>
> Options:
> -h, --help usage information (this)
> -m, --mount unshare mounts namespace
> -u, --uts unshare UTS namespace (hostname etc)
> -i, --ipc unshare System V IPC namespace
> -n, --net unshare network namespace
>
> Anyway i'll wait for a next criu version which will hopefully support
> namespaces :)
I thought a while and understood that I need more information about
your use-case.
CRIU supports pidns, but only if it's dumped with all tasks.
e.g: "criu dump --tree 4601" will dump pidns and all processes of your
LXC container.
You try to dump a sub-tree of processes from CT, and you do this from the
host system. In this case CT's pidns is an external resource.
http://criu.org/What_cannot_be_checkpointed#External_resources
Each external resource must be handled separately. And before adding
support of one more type of external resources in CRIU, we want to be
sure, that we have a real use-case for it.
So could you describe your use-case in details?
Thanks.
>
> Regards,
>
>
> 2014/1/22 Andrew Vagin <avagin at parallels.com>
>
> On Tue, Jan 21, 2014 at 02:40:16PM +0100, Smain Kahlouch wrote:
> > Hello guys,
> >
> > I don't know if it's the right place to post this issue but I didn't find
> > another way to contact you.
> >
> > I'm currently testing lxc features ("docker" to be precise) and I'm
> facing the
> > following message when I try to use criu :
> >
> >
> > 1 - check if CRIU is working with my kernel :
> >
> > criu check --ms
> > (00.012246) Warn (tun.c:55): Skipping tun support check
> > Looks good.
> >
> > 2 - Identify what i want to dump, for example varnish:
> >
> > init,1
> > ├─acpid,3886
> > ├─atd,3648
> > ├─auditd,3591
> > │ ├─audispd,3593
> > │ │ └─{audispd},3598
> > │ └─{auditd},3592
> > ├─cron,3781
> > ├─dbus-daemon,3883 --system
> > ├─docker,3732 -d -p /var/run/docker.pid -r=false -s devicemapper
> > │ ├─lxc-start,4592 -n
> > 9f81f7bc33c83fc1369b9355c959b6f0d8c87c6758bb75af3ae726ba2bad053a -f...
> > │ │ └─sh,4601 -c /bin/bash -c '/usr/local/sbin/runservices.sh; /usr
> /sbin/
> > sshd -D'
> > │ │ ├─bash,4685 -c /usr/local/sbin/runservices.sh; /usr/sbin/
> sshd -D
> > │ │ │ └─sshd,5022 -D
> > │ │ ├─cc-node,4774 /usr/bin/cc-node -d -p /var/run/cc-node.pid
> > │ │ │ └─{cc-node},4776
> > │ │ ├─collectdmon,4820 -P /var/run/collectdmon.pid -- -C /etc/
> > collectd/collectd.conf
> > │ │ │ └─collectd,4822 -C /etc/collectd/collectd.conf -f
> > │ │ │ ├─{collectd},4823
> > │ │ │ ├─{collectd},4824
> > │ │ │ ├─{collectd},4825
> > │ │ │ ├─{collectd},4826
> > │ │ │ ├─{collectd},4827
> > │ │ │ └─{collectd},4828
> > │ │ ├─rsyslogd,4729 -c5
> > │ │ │ ├─{rsyslogd},4737
> > │ │ │ ├─{rsyslogd},4738
> > │ │ │ └─{rsyslogd},4739
> > │ │ ├─ruby,4837 /usr/bin/collectd-interface-daemon -p 5000 -l /
> var/
> > log -P /var/run -I ...
> > │ │ │ └─{ruby},7084
> > │ │ └─varnishd,4792 -P /var/run/varnishd.pid -a :8000 -T :6082
> -f /
> > etc/varnish/default.vcl -p ...
> > │ │ └─varnishd,4794 -P /var/run/varnishd.pid -a :8000 -T
> :6082 -f
> > /etc/varnish/default.vcl -p ...
> > │ │ ├─{varnishd},4795
> > │ │ ├─{varnishd},4796
> > │ │ ├─{varnishd},4797
> > │ │ ├─{varnishd},4798
> > │ │ ├─{varnishd},4800
> > │ │ ├─{varnishd},4801
> > │ │ ├─{varnishd},4802
> > │ │ ├─{varnishd},4803
> > │ │ ├─{varnishd},4804
> > │ │ ├─{varnishd},4805
> > │ │ ├─{varnishd},4806
> > │ │ ├─{varnishd},4807
> > │ │ ├─{varnishd},4808
> > │ │ ├─{varnishd},4809
> > │ │ ├─{varnishd},4810
> > │ │ ├─{varnishd},4811
> > │ │ ├─{varnishd},4812
> > │ │ └─{varnishd},4813
> >
> > 3 - try to dump
> >
> > criu dump --tree 4792 --images-dir /data/ --leave-stopped
> > pie: Error (pie/parasite.c:243): mount failed (-1)
> > pie: Error (pie/parasite.c:474): Close the control socket for writing
> > >
> > (00.095409) Error (parasite-syscall.c:787): Can't retrieve FD from socket
> > (00.095454) Error (parasite-syscall.c:297): Message reply from daemon is
> > trimmed (12/0)
> > (00.095468) Error (cr-dump.c:1441): Can't get proc fd (pid: 4792)
> > (00.096172) Error (cr-dump.c:1811): Dumping FAILED.
> >
> >
> > I built a custom kernel from 3.12.6 debian sources.
> >
> > I followed the instructions in your website
> >
> > Could you please help me to fix that.
>
> You are trying to dump a task from another pidns. Unfortunately it's
> unsupported by now. I'm going to fix that. I think it will not require too
> much time. Thank you for the report.
>
> Currently you can workaround this issue, if you enter in this pidns and
> mount procfs in /proc.
>
> unshare -m nsenter -p -t PID criu.sh
>
> # cat criu.sh
> set -e
> mount -make-rprivate /
> mount -t proc proc /proc
> criu dump --tree PID --images-dir /data/ --leave-stopped
>
> >
> > Thanks,
> > Smana
>
> > _______________________________________________
> > CRIU mailing list
> > CRIU at openvz.org
> > https://lists.openvz.org/mailman/listinfo/criu
>
>
>
More information about the CRIU
mailing list