This is the mail archive of the cygwin-patches 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: [PATCH RFC] fork: remove cygpid.N sharedmem on fork failure


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

Attachment: signature.asc
Description: PGP signature


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