FS#9726 - [udev-118-2] some critical nodes are not created

Attached to Project: Arch Linux
Opened by Corrado Primier (bardo) - Friday, 29 February 2008, 20:08 GMT
Last edited by Tobias Powalowski (tpowa) - Monday, 24 March 2008, 09:25 GMT
Task Type Bug Report
Category Packages: Testing
Status Closed
Assigned To Tobias Powalowski (tpowa)
Aaron Griffin (phrakture)
Thomas Bächler (brain0)
Architecture All
Severity High
Priority Normal
Reported Version 2007.08-2
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

On my machine I use the fancontrol script to slow down the fans, but it's a few days this script renders the system completely unusable spawning thousands of processes every second, thus preventing login to any non-root user. The problem is the same described in this thread: http://forums.gentoo.org/viewtopic-t-583310.html

Since everything worked well a few days ago, I obviously suspect an upgrade. This is supported by the fact that the script was nearly identical in 3.0.0, which I used for months. I upgraded on the 24th and then on the 27th, that's also when I experienced the problem, so, since I have the fancontrol daemon in rc.conf, I think the guilty package was upgraded on the 24th and then, on the 27th's reboot, the script went out of control, but I may be wrong (shell scripts, after all, frequently spawn external programs in addition to built-in functions).

List of the packages upgraded on the 24th:
[2008-02-24 12:19] upgraded pacman (3.1.1-1 -> 3.1.2-1)
[2008-02-24 12:54] upgraded atanks (2.5-3 -> 2.8-1)
[2008-02-24 12:54] upgraded bochs (2.3.5-1 -> 2.3.6-1)
[2008-02-24 12:54] upgraded claws-mail (3.3.0-1 -> 3.3.1-1)
[2008-02-24 12:54] upgraded libcups (1.3.5-1 -> 1.3.6-1)
[2008-02-24 12:54] upgraded cups (1.3.5-2 -> 1.3.6-1)
[2008-02-24 12:55] upgraded e-cvs (20080218-1 -> 20080220-1)
[2008-02-24 12:55] upgraded farsight (0.1.24-1 -> 0.1.25-1)
[2008-02-24 12:55] upgraded filesystem (2008.02-1 -> 2008.02-2)
[2008-02-24 12:55] upgraded gnunet (0.7.3-1 -> 0.7.3-2)
[2008-02-24 12:55] upgraded udev (116-3 -> 118-2)
[2008-02-24 12:55] upgraded initscripts (2007.11-2 -> 2008.02-1)
[2008-02-24 12:56] upgraded kernel26 (2.6.24.1-2 -> 2.6.24.2-1)
[2008-02-24 12:56] upgraded man-pages (2.77-1 -> 2.78-1)
[2008-02-24 12:56] upgraded python (2.5.1-5 -> 2.5.2-2)
[2008-02-24 12:56] upgraded medit (0.9.2-1 -> 0.9.3-1)
[2008-02-24 12:56] upgraded mpg123 (1.2.0-1 -> 1.2.1-1)
[2008-02-24 12:56] upgraded pinot (0.82-1 -> 0.82-2)
[2008-02-24 12:56] upgraded python-sqlalchemy (0.4.2p3-1 -> 0.4.3-1)
[2008-02-24 12:57] upgraded ruby (1.8.6_p111-3 -> 1.8.6_p111-4)
[2008-02-24 12:57] upgraded xf86-video-ati (6.7.197-2 -> 6.8.0-1)
[2008-02-24 12:57] upgraded xorg-apps (1.0.3-2 -> 1.0.3-3)
[2008-02-24 12:57] upgraded xorg-server (1.4.0.90-6 -> 1.4.0.90-7)
[2008-02-24 12:57] upgraded xulrunner (1.8.1.11-1 -> 1.8.1.12-1)

List of packages upgraded on the 27th:
[2008-02-27 11:54] upgraded attr (2.4.39-2 -> 2.4.41-1)
[2008-02-27 11:54] upgraded acl (2.2.45-2 -> 2.2.47-1)
[2008-02-27 11:54] upgraded aircrack-ng (0.9.2-2 -> 0.9.3-1)
[2008-02-27 11:54] upgraded bluez-libs (3.24-1 -> 3.27-1)
[2008-02-27 11:54] upgraded bluez-utils (3.24-2 -> 3.27-1)
[2008-02-27 11:54] upgraded e2fsprogs (1.40.5-2 -> 1.40.6-1)
[2008-02-27 11:54] upgraded filezilla (3.0.7-1 -> 3.0.7.1-1)
[2008-02-27 11:54] upgraded grub (0.97-10 -> 0.97-11)
[2008-02-27 11:54] upgraded iproute (070710-3 -> 2.6.24_rc7-1)
[2008-02-27 11:54] upgraded iptables (1.3.8-2 -> 1.4.0-1)
[2008-02-27 11:55] upgraded kernel26 (2.6.24.2-1 -> 2.6.24.3-1)
[2008-02-27 11:55] upgraded libarchive (2.4.11-1 -> 2.4.12-1)
[2008-02-27 11:55] upgraded mplayer (1.0rc2-2.1 -> 1.0rc2-3)
[2008-02-27 11:55] upgraded nmap (4.53-1 -> 4.53-2)
[2008-02-27 11:55] upgraded ntfs-3g (1.2129-1 -> 1.2216-1)
[2008-02-27 11:55] upgraded pdfedit (0.3.2-1 -> 0.4.1-1)
[2008-02-27 11:56] upgraded teewars (0.3.4-1 -> 0.3.4-2)
[2008-02-27 11:56] upgraded wine (0.9.53-1 -> 0.9.56-1)

Definitely too many system packages to easily sort out the responsible one. I'd like to know where that fancontrol.pl comes from, since it isn't included in the lm_sensors source package.
This task depends upon

Closed by  Tobias Powalowski (tpowa)
Monday, 24 March 2008, 09:25 GMT
Reason for closing:  Fixed
Comment by Roman Kyrylych (Romashka) - Friday, 29 February 2008, 21:33 GMT
hm, the only thing I can think about the change in behaviour is that probably it could be related to kernel/udev upgrade
Comment by Corrado Primier (bardo) - Saturday, 01 March 2008, 16:01 GMT
I'm beginning to understand... line 379 in /usr/sbin/fancontrol contains a process substitution: "read < <(exec sleep $INTERVAL)". I don't really understand the advantages of this line over a simple "sleep $INTERVAL", but if I launch it the way it is I get this error: "-bash: /dev/fd/62: No such file or directory". Result: the sleep process continues in background, and since /dev/fd/* is not created, read terminates and another cycle starts. Substituting with "sleep $INTERVAL" works around the problem.

So yes, it might be udev 118 that stopped creating /dev/fd/ for some reason. I'll test the one in [core] and see.
Comment by Corrado Primier (bardo) - Saturday, 01 March 2008, 16:12 GMT
Guess what... I didn't test it (too many things to downgrade) but in udev-116 start_udev contained a function (lines 63-77) called make_extra_nodes() that does exactly what I need:

make_extra_nodes () {
# there are a few things that sysfs does not export for us.
# these things go here (and remember to remove them in
# remove_extra_nodes()
#
# Thanks to Gentoo for the initial list of these.
ln -snf /proc/self/fd $udev_root/fd
ln -snf /proc/self/fd/0 $udev_root/stdin
ln -snf /proc/self/fd/1 $udev_root/stdout
ln -snf /proc/self/fd/2 $udev_root/stderr
ln -snf /proc/kcore $udev_root/core

mkdir $udev_root/pts
mkdir $udev_root/shm
}

After linking by hand everything works as expected. These nodes are pretty critical... they should be restored ASAP.
Comment by Corrado Primier (bardo) - Saturday, 01 March 2008, 16:15 GMT
BTW, the bug category should be changed to "testing packages", and the subject should be renamed in a more meaningful way.
Comment by Tobias Powalowski (tpowa) - Thursday, 06 March 2008, 09:29 GMT
aaron you did take care of this in you latest udev changes?
Comment by Aaron Griffin (phrakture) - Friday, 07 March 2008, 19:40 GMT
No, because this has to do with initscripts
Comment by Aaron Griffin (phrakture) - Friday, 07 March 2008, 20:43 GMT Comment by Aaron Griffin (phrakture) - Friday, 07 March 2008, 21:02 GMT
We may actually want to move these things to /lib/udev/devices. Throw some absolute symlinks in the package... might work better. Would someone mind testing that out?
Comment by Roman Kyrylych (Romashka) - Friday, 07 March 2008, 21:44 GMT
I'm not sure I've understood how to test that,
just check if those nodes could be created from /lib/udev/devices?
Comment by Aaron Griffin (phrakture) - Friday, 07 March 2008, 22:14 GMT
no no, I mean create some absolute symlinks in /lib/udev/devices that point to /proc/fd and /proc/fd/{0,1,2} and the like

udev copies that directory to /dev before doing anything at all

Loading...