Description of Problem:
Certain daemons forget to close their descriptors.
The initlog (process.c) closes stderr and stdout but
forgets stdin. Thus, login sessions fail to exist if
/sbin/service was executed.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Log into a remote server, not running NFS by default.
2. Type "service nfs start"
3. Try to log out
Login session hangs due to attached stdin in a daemon.
Login sessions ending normally.
The code around process.c:runCommand() is not maintainable.
This can be worked around with a simple patch to the script,
but it seems proper to fix the problem in initlog, in order
to avoid surprises in the future.
--- ./etc/rc.d/init.d/functions.0 Wed Feb 6 20:05:59 2002
+++ ./etc/rc.d/init.d/functions Wed Aug 21 17:09:07 2002
@@ -136,9 +136,9 @@
# And start it up.
if [ -z "$user" ]; then
$nice initlog $INITLOG_ARGS -c "$*"
$nice initlog $INITLOG_ARGS -c "$*" </dev/null
$nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c \"$*\""
$nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c \"$*\"" </dev/null
[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
Closing bugs on older, no longer supported, releases. Apologies for any lack of
Realistically, daemons should be fixed.