udev initramfs hook ignores that udevadm is disabled, copies it anyway
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Karmic |
Won't Fix
|
High
|
Unassigned |
Bug Description
Binary package hint: udev
I've just experienced a perfect storm of bugs during an upgrade, which I will relate here for its amusement value rather than for its relevance in fixing the bug that I am currently filing.
During an upgrade to the latest karmic - which somehow managed to find over 150 distinct packages in need of upgrading - the 'restart udev' command in the middle of the udev upgrade hung.
'sudo initctl log-priority debug' also hung - in the 'sudo' part, not the 'initctl' part. Trying to run 'sudo' anywhere else obviously also hangs.
Switching to VT 1 and trying to log in, the login is accepted... and then hangs right after pam_motd, without giving me a shell (this points to pam_ck_connector having problems).
So switching back and forth between X and VT1 and trying a few different things to get myself unwedged, something gets confused on the audio side, causing my speakers to repeat a single sample from the music I had playing. So I try to kill pulseaudio and get it to restart.
Killing pulseaudio alerts gnome-settings-
So now I can't type in any of my X terminals either.
So I use SysRq-E, which succeeds in killing the processes and respawning them... aside from the fact that X comes back without a keyboard or mouse.
And of course openssh isn't managed by upstart yet, so I can't log in remotely.
So I reboot, and that's when the fun starts... because among the packages that was upgraded before udev hung was the kernel. Which means that when the package was configured, a new initramfs was generated... while udev was in an unconfigured state. Which means that when /sbin/udevadm was copied into the new initramfs, it wasn't /sbin/udevadm.
Output I should never see from my initramfs at boot time:
udevadm trigger is not permitted while udev is unconfigured.
udevadm settle is not permitted while udev is unconfigured.
Fortunately, I had an earlier kernel installed so I could boot from it and recover - but the udev initramfs hook should *never* do this. Either it should explicitly grab /sbin/udevadm.
What I can't figure out is how the linux package was configured at all under these circumstances: linux-image-
Here, though, are the relevant bits of /var/log/dpkg.log.
2009-10-16 17:37:32 upgrade linux-image-
2009-10-16 17:37:32 status half-configured linux-image-
2009-10-16 17:37:32 status unpacked linux-image-
2009-10-16 17:37:32 status half-installed linux-image-
2009-10-16 17:37:53 status half-installed linux-image-
2009-10-16 17:37:56 status unpacked linux-image-
2009-10-16 17:37:58 status unpacked linux-image-
2009-10-16 17:38:40 upgrade udev 147~-5 147~-6
2009-10-16 17:38:40 status half-configured udev 147~-5
2009-10-16 17:38:40 status unpacked udev 147~-5
2009-10-16 17:38:40 status half-installed udev 147~-5
2009-10-16 17:38:40 status half-installed udev 147~-5
2009-10-16 17:38:40 status half-installed udev 147~-5
2009-10-16 17:38:41 status half-installed udev 147~-5
2009-10-16 17:38:41 status unpacked udev 147~-6
2009-10-16 17:38:41 status unpacked udev 147~-6
2009-10-16 17:41:49 configure linux-image-
2009-10-16 17:41:49 status unpacked linux-image-
2009-10-16 17:41:49 status half-configured linux-image-
2009-10-16 17:42:12 status installed linux-image-
2009-10-16 17:42:55 configure udev 147~-6 147~-6
2009-10-16 17:42:55 status unpacked udev 147~-6
2009-10-16 17:42:55 status unpacked udev 147~-6
2009-10-16 17:42:55 status unpacked udev 147~-6
2009-10-16 17:42:55 status unpacked udev 147~-6
2009-10-16 17:42:56 status unpacked udev 147~-6
2009-10-16 17:42:56 status unpacked udev 147~-6
2009-10-16 17:42:56 status unpacked udev 147~-6
2009-10-16 17:42:56 status half-configured udev 147~-6
<crash>
ProblemType: Bug
Architecture: amd64
CustomUdevRuleF
Date: Fri Oct 16 20:10:17 2009
DistroRelease: Ubuntu 9.10
MachineType: LENOVO 6371CTO
Package: udev 147~-6
PccardctlIdent:
Socket 0:
no product info available
PccardctlStatus:
Socket 0:
no card
ProcCmdLine: root=/dev/
ProcEnviron:
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
ProcVersionSign
SourcePackage: udev
Uname: Linux 2.6.31-14-generic x86_64
dmi.bios.date: 12/27/2006
dmi.bios.vendor: LENOVO
dmi.bios.version: 7IET23WW (1.04 )
dmi.board.name: 6371CTO
dmi.board.vendor: LENOVO
dmi.board.version: Not Available
dmi.chassis.
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.
dmi.modalias: dmi:bvnLENOVO:
dmi.product.name: 6371CTO
dmi.product.
dmi.sys.vendor: LENOVO
Changed in apt (Ubuntu Karmic): | |
milestone: | ubuntu-9.10 → karmic-updates |
Changed in apt (Ubuntu Karmic): | |
status: | Triaged → Won't Fix |
I still don't see any way this could be a udev bug, so reassigning to update-manager, which must have forced out-of-order configuration of the packages?