Race condition using a udev helper program to name interfaces

Bug #575244 reported by Michael Goetze on 2010-05-04
This bug affects 1 person
Affects Status Importance Assigned to Milestone
udev (Ubuntu)

Bug Description

Binary package hint: ifupdown

This bug applies to Ubuntu 10.04. I have installed the Dell utility biosdevname and the following /etc/udev/rules.d/86-biosdevname.rules

KERNEL=="eth*", ACTION=="add", PROGRAM="/usr/sbin/biosdevname --policy=all_ethN -i %k", NAME="%c"

This works fine and well on Ubuntu Hardy and Debian Squeeze. On Ubuntu Lucid, however, it seems that /etc/init/network-interface.conf grabs the name originally detected by the kernel and runs ifup on it - and is done before udev has had a chance to rename the interfaces, which fails when they are already up. So I end up with a mix of eth0, eth1_rename, etc., none of them corresponding to the interface they are supposed to correspond to.

This issue is a blocker for the deployment of Lucid at my workplace.

Michael Goetze (mgoetze) wrote :

On closer examination, this seems to be a pure udev problem.

Changed in ifupdown (Ubuntu):
status: New → Invalid
affects: ifupdown (Ubuntu) → udev (Ubuntu)
Changed in udev (Ubuntu):
status: Invalid → New
Michael Goetze (mgoetze) wrote :

This is a syslog with udev debugging of a R710 booting and exhibiting the bug.

Michael Goetze (mgoetze) wrote :

I tried to work around this bug by adding the following to /etc/init/udevtrigger.conf:

pre-start exec udevadm control --max-childs=1

However, it still (sometimes!) doesn't work. And as a matter of fact, I still see a lot of udevd processes (both with ps and in my logfiles), so it seems that udevadm control --max-childs is actually a NOOP.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments