Github user fr0stbyte commented on the issue:

    https://github.com/apache/zookeeper/pull/410
  
    @phunt I'd have no problem making in backward compatible, but I am not sure 
how. Can you offer some guidance here ?
    @anmolnar In the description of MESOS-4065 you can see 2 processes that 
share the same open file descriptor. In Linux ( Unix in general ) upon forking, 
the child inherits all the open files of the parent, unless the O_CLOEXEC 
option has been set on the file descriptor. My change uses the SOCK_CLOEXEC 
which is an atomic set of that flag. The alternative is to open it and then use 
`fcntl` to set the flag, but that leaves space for a race as a process could 
fork before.
    Since the child process does not need / makes use of the open file 
descriptor it is proper to close it before exec'ing. I wouldn't say it's a 
functional bug, but rather good housekeeping ( afaict ).
    @afine I think in order to reproduce it, you need a process that uses the C 
client, then that forks and execs something else. To verify, look at the open 
file descriptors for the 2 processes and verify that the open socket to 
zookeeper is not available in the child.


---

Reply via email to