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: execve issues, and execve with cygrunsrv


Corinna Vinschen wrote:
On Mar 30 12:45, Daniel Pocock wrote:
Hi,

I'm using the execve call in a UNIX program (which works successfully),
and now I am testing it with Cygwin.

The program is using execve as a way to restart itself after receiving
SIGHUP.

The child process started by execve seems to be unable to work properly,
I observe various errors:
- DNS lookups fail
- binding to UDP sockets fails

Is that with Cygwin 1.5.25 or with Cygwin 1.7? If it's 1.5.25, could
you try if this still occurs under Cygwin 1.7?
I tried with both.

On 1.5.25, execve works, but the new process can't open sockets

On 1.7, the socket problem is gone, but there are other issues with cygrunsrv

Does this only happen when started from a native Windows process (cmd.exe
or so) or does this also happen when started from Cygwin's bash?

Tested from Cygwin's bash, and as a service under cygrunsrv
Furthermore, I would like the process to become a service started by
cygrunsrv. Is it safe to use execve in a process started by cygrunsrv?

Did you try?
I have now had a chance to try it under cygrunsrv from Cygwin 1.5.25 and 1.7

Under 1.5.25, it doesn't work because of the sockets issue

Under 1.7, a new issue is revealed: execve doesn't maintain the same process ID, so cygrunsrv thinks the service has actually stopped, and the cygrunsrv process exits. This is obviously quite bad.

I tried to work around it by creating a PID file, and passing the -x parameter to cygrunsrv. It seems that cygrunsrv only checks the PID file when first started, and not after execve. A possible workaround would be for cygrunsrv to check for a new PID file each time the process exits.

This brings me to a few more questions:

- Can execve be implemented on Cygwin in such a way that the PID is preserved? This would be the best solution for portability.

- Can cygrunsrv be enhanced to deal with this behaviour?



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


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