[PATCH RFC] fork: remove cygpid.N sharedmem on fork failure

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Jun 22 10:25:00 GMT 2018


On Jun 22 11:04, Michael Haubenwallner wrote:
> On 06/21/2018 09:27 AM, Corinna Vinschen wrote:
> > On Jun 20 17:47, Michael Haubenwallner wrote:
> >> On 06/07/2018 10:19 AM, Corinna Vinschen wrote:
> >>> On Jun  5 15:05, Michael Haubenwallner wrote:
> >>>> Hi,
> >>>>
> >>>> I'm using attached patch for a while now, and orphan cygpid.N shared memory
> >>>> instances are gone for otherwise completely unknown windows process ids.
> 
> >>
> >> Without this patch, for the first-try child process which the
> >> cygwin1.dll fails to initialize for because of wrong dll loaded,
> >> the process handle is released but the cygpid.N shmem handle is not.
> >>
> >> Then, another completely independent process may get the same
> >> windows process id again, and cygwin1.dll fails to initialize
> >> because of the existing but orphaned cygpid.N shmem handle.
> > 
> > This problem appear to be a non-problem in the normal code path.
> 
> Well, the underlying OS may temporarily be low on resources,
> and the parent process may retry to fork by itself...
> 
> Currently, when the child process can be created but not initialized
> by cygwin1.dll for whatever reason, the process handle is closed, but
> (as far as I have understood) the shmem handle actually is lost, and
> the orphaned shmem entry exists until the parent process terminates.

Actually I'm not sure about this discrepancy but I guess the shmem
was a tolerable loss at this point.

> > In case of restarting the 2nd-try child, wouldn't it make sense to reuse
> > the shmem area instead of breaking it down?
> 
> The 2nd-try child usually does get another windows pid, and we would have
> to *rename* the shmem: *before* closing the 1st-try windows process handle.

You just can reuse it in the corner case where the pid is the same.

> And when neither child can be initialized for low resource reasons?

Fork simply fails?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20180622/c808fb18/attachment.sig>


More information about the Cygwin-patches mailing list