FreeBSD 8.2-stable: devd fails to restart

Jeremy Chadwick freebsd at
Thu Feb 2 21:45:53 UTC 2012

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 8.2-STABLE FreeBSD 8.2-STABLE #7: Sat Jul  9 23:00:31 CEST 2011     root at  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
  -- Same script issues a start of devd, which fails because the
     daemon is still running (still shutting down)
  -- Resulting message is failure
- Between failure message and below step, devd shuts down
- Admin issues "service devd status"
  -- Script states devd isn't running

I imagine either rc.subr(8) check_pidfile or wait_for_pids needs to be
used, presumably in devd_stop () (which would need to be added/written).
I do not know the implications of adding this, however, as there may be
situations where (say on system shutdown) that you want things to "just
end immediately" and not wait for the daemon to cleanly shut down.  I
say this because of devd's direct ties to devctl(4).

Doug, any thoughts?

| Jeremy Chadwick                                 jdc at |
| Parodius Networking            |
| UNIX Systems Administrator                 Mountain View, CA, US |
| Making life hard for others since 1977.             PGP 4BD6C0CB |

More information about the freebsd-stable mailing list