FreeBSD 8.2-stable: devd fails to restart
Jeremy Chadwick
freebsd at jdc.parodius.com
Fri Feb 3 06:54:51 UTC 2012
On Thu, Feb 02, 2012 at 09:50:58PM -0800, Doug Barton wrote:
> On 02/02/2012 13:45, Jeremy Chadwick wrote:
> > On Thu, Feb 02, 2012 at 09:22:22PM +0100, Torfinn Ingolfsen wrote:
> >> Hi,
> >>
> >> I thought this bug was fixed back in 2009?
> >> root at kg-v7# uname -a
> >> FreeBSD kg-v7.kg4.no 8.2-STABLE FreeBSD 8.2-STABLE #7: Sat Jul 9 23:00:31 CEST 2011 root at kg-v7.kg4.no:/usr/obj/usr/src/sys/GENERIC amd64
> >> root at kg-v7#
> >> root at kg-v7# service devd status
> >> devd is running as pid 555.
> >> root at kg-v7# service devd restart
> >> Stopping devd.
> >> Starting devd.
> >> devd: devd already running, pid: 555
> >> /etc/rc.d/devd: WARNING: failed to start devd
> >> root at kg-v7# service devd status
> >> devd is not running.
> >>
> >> What gives?
> >
> > This is probably "what gives", as it's a common problem with all sorts
> > of daemons and is not specific to devd in the least:
> >
> > - devd is running (pid 555)
> > - Admin issues "service devd restart"
> > -- devd is sent SIGTERM; devd internally starts shutting down,
> > but is not fully dead yet. "kill" does not block (wait) for
> > processes to end, obviously
>
> No, but wait_for_pids() does.
>
> The OP's /etc is out of date.
Hmm, mine dated April, for RELENG_8 tag, doesn't appear to use
wait_for_pids. Is there implicit usage in it somewhere? (Probably bits
of rc.subr(8) I'm not familiar with or don't remember...)
#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/devd,v 1.11.2.2 2011/04/29 20:31:52 dougb Exp $
#
# PROVIDE: devd
# REQUIRE: netif network_ipv6
# BEFORE: NETWORKING mountcritremote
# KEYWORD: nojail shutdown
. /etc/rc.subr
name="devd"
rcvar=`set_rcvar`
command="/sbin/${name}"
start_precmd=${name}_prestart
stop_precmd=find_pidfile
find_pidfile()
{
if get_pidfile_from_conf pid-file /etc/devd.conf; then
pidfile="$_pidfile_from_conf"
else
pidfile="/var/run/${name}.pid"
fi
}
devd_prestart ()
{
find_pidfile
# If devd is disabled, turn it off in the kernel to avoid memory leaks.
if ! checkyesno ${rcvar}; then
$SYSCTL hw.bus.devctl_disable=1
fi
}
load_rc_config $name
run_rc_command "$1"
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, US |
| Making life hard for others since 1977. PGP 4BD6C0CB |
More information about the freebsd-stable
mailing list