Comment 84 for bug 497299

Revision history for this message
Stephen Gildea (stepheng+launchpad) wrote :

I had the same symptoms as this bug when I upgraded to Karmic: my
system would appear to boot ok, but none of the TCP-based servers
would have been started.

After some investigation, I have two suggestions, one for people
trying to debug this problem, the other for the sysv-rc package
maintainers.

For those trying to debug their system after an upgrade, check the
state of your "rc" task:

sudo initctl status rc

You should see task "rc" in state "waiting". If you do, you have a
different case from me (perhaps you are actually hitting this bug),
and my experience will not help you further.

If, like me, you find your rc task still "running", then it is stuck
on something, and you need to figure out what. My next step was to
see what it was currently running:

ps axf | grep -v grep | grep -A8 rc2.d

This will output the subprocess(es) that the /etc/init.d/rc script is
waiting on. Figure out what's holding it up.

In my case, it was hung trying to modprobe for a software modem.
This was left over from an unsuccessful experiment I did years ago.
Apparently this initialization had been broken and hanging on my
system for some time, but previously it didn't interfere with the rest
of the system initialization. I fixed the problem by uninstalling the
software modem package.

Now to my suggestion for the package maintainers. It seems that the
rc manager script assumes that all the "start" scripts it runs will
complete; my case shows that this assumption can be wrong. Perhaps
the rc manager needs to run scripts in the background, updating its
state only when (if) they complete. That way one broken startup
script cannot block the entire system initialization.

I have sysv-rc 2.87dsf-4ubuntu12.