I'm guessing this is waiting for a SRU. Here's the patch for Lucid and Maverick. Description updated for SRU. Please somebody add some notes to 'REGRESSION POTENTIAL' because I have no idea about that...
** Description changed: When sshd gets a signal 1 for reload, it forks a new process and ditches the old. This causes upstart to believe that ssh has crashed, and loses track of it. A second reload (or any other initctl operation on ssh) will thus say: reload: Unknown instance: There would be 2 ways to fix this: 1. Don't have ssh fork on relod, but keep the same pid 2. Use a different mechanism in upstart to keep track of ssh. Maybe a pid file? Just tracking children of the exited ssh won't work, or it might accidentally track a particular session rather than the master, if somebody just happens to log in close to reload time. + openssh-server 1:5.3p1-3ubuntu4 + upstart 0.6.5-7 - # lsb_release -rd - Description: Ubuntu 10.04.1 LTS - Release: 10.04 + ==== Info for Maverick, Lucid SRU ==== + IMPACT: if sshd gets a HUP signal, it forks a new process and upstart thinks the process died and loses track of it, so the user/admin uses the ability to stop/start/reload the daemon through upstart. + The problem is fixed in Natty 5.6p1-2ubuntu3. See attached patches for Maverick and Lucid. - # dpkg -l openssh-server | cat - Desired=Unknown/Install/Remove/Purge/Hold - | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend - |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) - ||/ Name Version Description - +++-===========================================-==========================================================-================================================================= - ii openssh-server 1:5.3p1-3ubuntu4 secure shell (SSH) server, for secure access from remote machines + TEST CASE: - # dpkg -l upstart - Desired=Unknown/Install/Remove/Purge/Hold - | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend - |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) - ||/ Name Version Description - +++-==============-==============-============================================ - ii upstart 0.6.5-7 event-based init daemon + - install openssh-server + - send a HUP signal to sshd + - the daemon is restarted, but upstart thinks that it crashed (/var/log/daemon.log): + + Dec 28 20:59:57 utest-lls32 init: ssh main process ended, respawning + Dec 28 20:59:57 utest-lls32 init: ssh main process (1451) terminated with status 255 + Dec 28 20:59:57 utest-lls32 init: ssh main process ended, respawning + Dec 28 20:59:57 utest-lls32 init: ssh main process (1455) terminated with status 255 + Dec 28 20:59:57 utest-lls32 init: ssh respawning too fast, stopped + + - after this, upstart won't know about sshd, despite the daemon running + just fine: + + r...@utest-lls32:~# reload ssh + reload: Unknown instance: + + With the fix applied, the correct behavior is: + + - send a HUP signal to sshd + ps ax |grep sshd + kill -HUP sshd + - the daemon reloads (/var/log/auth.log): + + Dec 28 21:37:01 utest-lls32 sshd[742]: Received SIGHUP; restarting. + Dec 28 21:37:01 utest-lls32 sshd[742]: Server listening on 0.0.0.0 port 22. + Dec 28 21:37:01 utest-lls32 sshd[742]: Server listening on :: port 22. + + - reloading with upstart gives the same result, and NOT an error + message. + + REGRESSION POTENTIAL: TODO -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to openssh in ubuntu. https://bugs.launchpad.net/bugs/687535 Title: upstart loses track of ssh daemon after reload ssh -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs