Comment 0 for bug 988394

agenkin (agenkin-p) wrote :

All our machnes were hanging indefinitely when asked to reboot. We traced it down to the /etc/rc6.d/S40umountfs script hanging. The problem in our case is that autofs leaves phantom entries in /proc/mounts after it's stopped (I'm reporting this as a separate bug). The entries autofs creates are not real mount points - these are the directories monitored by the autofs daemon, which mounts file systems as subdirectories to those directories.

The expected behaviour for the umountfs script would be to skip over any bogus mount points, left over by autofs or anything else.

For instance, we found out that by the time /etc/rc6.d/S40umountfs runs the autofs daemon is stopped (as expected) and all directories that had been mounted by it are already unmounted (as expected, it mounts NFS shares in our case, which are unmounted by /etc/rc6.d/S31umountnfs.sh). However, /proc/mounts still contained the following lines:

/etc/auto.nfs_h /h autofs rw,relatime,fd=6,pgrp=1004,timeout=300,minproto=5,maxproto=5,indirect 0 0
/etc/auto.nfs_s /s autofs rw,relatime,fd=12,pgrp=1004,timeout=300,minproto=5,maxproto=5,indirect 0 0
/etc/auto.nfs_cdf /cdf autofs rw,relatime,fd=18,pgrp=1004,timeout=300,minproto=5,maxproto=5,direct 0 0

which confused the umountfs script. The variable REG_MTPTS, among the proper file systems, contained the following: "/h /s /cdf". Subsequently, when the umountfs script invoked "fstab-decode umount ..." it hung trying to unmount these non-existent file systems.

In summary, I think that either the umountfs script should be made smarter to not pass bogus mount points to fstab-decode, or fstab-decode should be more robust and not hang when given a mount point that does not exist. Perhaps both.

Thanks!

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: initscripts 2.88dsf-13.10ubuntu11
ProcVersionSignature: Ubuntu 3.2.0-23.36-generic-pae 3.2.14
Uname: Linux 3.2.0-23-generic-pae i686
ApportVersion: 2.0.1-0ubuntu6
Architecture: i386
Date: Wed Apr 25 11:33:07 2012
ProcEnviron:
 TERM=xterm
 PATH=(custom, no user)
 SHELL=/local/bin/bash
SourcePackage: sysvinit
UpgradeStatus: No upgrade log present (probably fresh install)