This is the mail archive of the
mailing list for the Cygwin project.
Re: cygrunsrv doesn't stop service during reboot
On Feb 20 16:58, Corinna Vinschen wrote:
> On Feb 20 11:56, Frank Fesevur wrote:
> > Hi,
> > I have a annoying problem with rsyncd running as a service using
> > cygsunsrv. When I reboot the server running Win2008R2 the service is
> > not properly stopped. Therefore the .pid file stays in /var/run and
> > when the server starts again, the rsync daemon not started because it
> > finds a .pid file.
> > When I manually stop the service (net stop rsyncd) it works as
> > expected. We don't have this problem on our Win2003 server. The
> > cygrunsrv command is the same on both servers: cygrunsrv -I rsyncd -d
> > "CYGWIN rsyncd" -f "Rsync file transfer daemon" -p /bin/rsync.exe -a
> > "--daemon --no-detach" -O
> It's supposed to work like this:
> The main thread of cygrunsrv is doing nothing, except waiting for the
> actual daemon to terminate in a waitpid(2) call.
> A second thread is called from the Windows service control manager to
> notify cygrunsrv of the imminent shutdown. In your case (-O) it gets
> the SERVICE_CONTROL_PRESHUTDOWN message. The called function calls
> kill(2) to kill the daemon.
> The main thread returns from waitpid(2), checks if the pidfile exists
> and, if so, syslog's a message to the Windows log (unless you run
> "service `rsyncd': removing <pidfile>".
> Then it unlinks the file and if that didn't work, it syslog's
> another message:
> "service `rsyncd': error removing <pidfile> (errno=N)"
> Did you check your log? Do you see any of these messages? If not,
> I assume that the shutdown kills the service process so fast that it
> has no chance for the cleanup. Which is kind of weird in case of
> preshutdown, given that you're supposed to have 3 minutes, at least
> by default...
> > Do I overlook something? Are other people having similar problem with
> > cygrunsrv with win2008R2?
> Interesting. Given that 2003 doesn't support the control message
> SERVICE_CONTROL_PRESHUTDOWN, it's kind of strange that it works on 2003
> but not on 2008R2. Did you try to reinstall your rsyncd service without
> the -O option, so that the service acts on the SERVICE_CONTROL_SHUTDOWN
> message instead?
Something else occured to me. You didn't specify a pidfile on the
cygrunsrv -I command line, so rsyncd will be run by cygrunsrv without
a pidfile. So, where is the pidfile coming from? Does rsync create
it by itself in daemon mode? I just tried this and the answer is no.
Again, from where do you get the pidfile in this scenario?
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple