Comment 4 for bug 1014916

Revision history for this message
Serge Hallyn (serge-hallyn) wrote :

Ok I've been able to reproduce this. I've tried with lvm snapshot containers - those did NOT do this. I don't understand why, unless it's simply the timing.

I used the following script:

cat notit.sh
#!/bin/bash

maclist=[]
i=0
for c in /var/lib/lxc/*/config; do
  mac=`grep lxc.network.hwaddr $c | awk -F= '{ print $2 }'`
  maclist[$i]="$mac"
  i=$((i+1))
done

for j in `seq 0 $i`; do
 echo "got macaddr ${maclist[j]}"
done

for j in `seq 0 $i`; do
  tail -100 /var/log/syslog | grep -q ${maclist[j]}
  if [ $? -ne 0 ]; then
        echo "${maclist[j]} was not in syslog"
  fi
done

to find a mac address of a container which didn't get an address, (grepping for the mac addr in /var/lib/lxc/*/config), and attached to such a console. ps -ef showed:

UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:38 ? 00:00:00 /sbin/init
root 42 1 0 16:38 ? 00:00:00 upstart-udev-bridge --daemon
root 44 1 0 16:38 ? 00:00:00 /usr/sbin/sshd -D
syslog 47 1 0 16:38 ? 00:00:00 rsyslogd -c4
root 52 1 0 16:38 ? 00:00:00 udevd --daemon
root 54 1 0 16:38 ? 00:00:00 /sbin/udevadm monitor -e
root 58 1 0 16:38 ? 00:00:00 udevadm settle
root 81 1 0 16:38 ? 00:00:00 /sbin/getty -8 38400 tty4
root 84 1 0 16:38 ? 00:00:00 /sbin/getty -8 38400 tty2
root 85 1 0 16:38 ? 00:00:00 /sbin/getty -8 38400 tty3
root 90 1 0 16:38 ? 00:00:00 cron
root 117 1 0 16:38 ? 00:00:00 /bin/login --
root 118 1 0 16:38 ? 00:00:00 /sbin/getty -8 38400 /dev/console
ubuntu 133 117 0 16:39 tty1 00:00:00 -bash
ubuntu 145 133 0 16:40 tty1 00:00:00 ps -ef

and ifconfig -a showed:

eth0 Link encap:Ethernet HWaddr 00:16:3e:2d:02:b9
          inet6 addr: fe80::216:3eff:fe2d:2b9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:118 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14800 (14.8 KB) TX bytes:550 (550.0 B)

lo Link encap:Local Loopback
          inet addr:127.0.0.1 Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING MTU:16436 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Note that udevadm monitor and settle are still running, and dhclient3 is
not yet running.

This is basically what I'd assumed since precise containers don't do this:
precise containers don't do udevadm trigger.

A workaround therefore will be to remove /etc/init/udevtrigger.conf from
the container.

Question remains exactly what is causing this - is there a rate limit in
the kernel or in user-space udev which makes this pause happen?