I have a script that launches a bunch of children in their own namespaces, and uses lxc-user-nic to attach a veth in each one to lxcbr0.
lxc-user-nic sometimes fails with the following output: cmd/lxc_user_nic.c: 937: lxc_secure_rename_in_ns: Error -1 renaming netdev vethP73QDAp to eth%d in container cmd/lxc_user_nic.c: 1304: main: Failed to rename the link When I sleep for 0.1 seconds before running lxc-user-nic against each newly-created background process, the failures go away. Looks like a race condition of some kind. Can someone help me understand what is causing the failure, and whether it is a bug or can be avoided with something more reliable than a sleep? Unfortunately, the "Error -1" text is not helpful, due to inconsistent error handling in lxc's network.c. The -1 value might represent EPERM, or might indicate a netlink_transaction() failure for some reason other than EPERM, since errno never gets captured/reported in that case. $ lsb_release -sd Ubuntu 18.04.2 LTS $ uname -mr 4.15.0-51-generic x86_64 $ dpkg-query --show lxc1 lxc1 3.0.3-0ubuntu1~18.04.1 This script often reproduces the error (on my system) when run with an argument of "20" (meaning launch 20 children). It requires the appropriate entry in /etc/lxc/lxc-usernet, of course. #!/bin/sh LXCUSERNIC=/usr/lib/$(uname -p)-linux-gnu/lxc/lxc-user-nic count="${1:-1}" # argv[1] indicates child count (default 1) while [ "$count" -gt 0 ]; do unshare --map-root-user --net sh -c "sleep 1" & #sleep .1 # Uncomment to avoid lxc-user-nic failure "$LXCUSERNIC" create _ _ "$!" veth lxcbr0 count=$((count - 1)) done _______________________________________________ lxc-users mailing list lxc-users@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-users