udev bridge fails to get events from kernel (missing FHANDLE)
Bug #1412543 reported by
Ricardo Salveti
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
Fix Released
|
High
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
High
|
Andy Whitcroft | ||
linux-flo (Ubuntu) |
Fix Released
|
High
|
Andy Whitcroft | ||
linux-mako (Ubuntu) |
Fix Released
|
High
|
Andy Whitcroft | ||
linux-manta (Ubuntu) |
Fix Released
|
High
|
Andy Whitcroft |
Bug Description
current build number: 70
device name: mako
channel: ubuntu-
last update: 2015-01-19 14:11:13
version version: 70
version ubuntu: 20150119
version device: 20150116
version custom: 20150119
Noticed that sometimes upstart is not receiving kernel events, which caused bad side effects at the usb event logic we have in ubuntu touch.
Basically I noticed that /etc/init/
Changed in canonical-devices-system-image: | |
importance: | Undecided → High |
milestone: | none → ww05-2015 |
status: | New → Confirmed |
Changed in linux-flo (Ubuntu): | |
milestone: | none → ubuntu-15.01 |
Changed in linux-mako (Ubuntu): | |
milestone: | none → ubuntu-15.01 |
Changed in linux-manta (Ubuntu): | |
milestone: | none → ubuntu-15.01 |
Changed in linux-flo (Ubuntu): | |
assignee: | nobody → Andy Whitcroft (apw) |
Changed in linux-mako (Ubuntu): | |
assignee: | nobody → Andy Whitcroft (apw) |
Changed in linux-manta (Ubuntu): | |
assignee: | nobody → Andy Whitcroft (apw) |
Changed in linux-mako (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in linux-manta (Ubuntu): | |
status: | New → In Progress |
Changed in linux-flo (Ubuntu): | |
status: | New → In Progress |
Changed in linux-flo (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in linux-manta (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in linux-flo (Ubuntu): | |
importance: | Medium → High |
Changed in linux-mako (Ubuntu): | |
importance: | Medium → High |
Changed in linux-manta (Ubuntu): | |
importance: | Medium → High |
Changed in linux (Ubuntu): | |
importance: | Medium → High |
tags: | added: kernel-da-key |
Changed in linux (Ubuntu): | |
status: | Confirmed → Fix Released |
Changed in canonical-devices-system-image: | |
status: | Confirmed → Fix Released |
To post a comment you must log in.
There is indeed a race in the upstart job, which makes it unable to receive the kernel events. It works every time now after changing the upstart job to start on 'started' instead of 'starting' udev.
Looking at the libudev code, this is what is currently happening: new_from_ netlink_ fd(struct udev *udev, const char *name, int fd)
"""
struct udev_monitor *udev_monitor_
{
struct udev_monitor *udev_monitor;
unsigned int group;
if (udev == NULL)
return NULL;
if (name == NULL)
group = UDEV_MONITOR_NONE; "/run/udev/ control" , F_OK) < 0 && !udev_has_ devtmpfs( udev)) {
log_ debug(" the udev service seems not to be active, disable the monitor");
group = UDEV_MONITOR_NONE;
group = UDEV_MONITOR_UDEV;
group = UDEV_MONITOR_ KERNEL;
return NULL;
else if (streq(name, "udev")) {
/*
* We do not support subscribing to uevents if no instance of
* udev is running. Uevents would otherwise broadcast the
* processing data of the host into containers, which is not
* desired.
*
* Containers will currently not get any udev uevents, until
* a supporting infrastructure is available.
*
* We do not set a netlink multicast group here, so the socket
* will not receive any messages.
*/
if (access(
} else
} else if (streq(name, "kernel"))
else
....
"""
Added some debug lines in the upstart-udev-bridge job and /run/udev/control is not necessarily available when this job starts (I'd guess it only happens on ubuntu-touch, since we start udev a bit later than the desktop).