This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
>   syslog-ng):
>   
>     "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

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]