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: make, PATH & "Win32 error 487"

On May 23 18:07, Corinna Vinschen wrote:
> On May 23 10:14, Satish Balay wrote:
> >   [...]
> > - It appears to be related to the huge length of one of the commands - and
> >   length of PATH
> > - I tried it on 3 different machines [with differences in default installed software]
> >   win2008/x64  - breaks when PATH is over 1.5K chars
> >   win2003/x32 - breaks when PATH is over  2K chars
> >   win7/x32    - breaks when PATH is over 20K chars.
> > 
> > Any ideas on how to debug this further to better understand the issue
> > - or workarrounds? This is with latest cygwin [and rebaseall done
> > correctly]
> There's perhaps not much you can do.  First of all, the problem is known
> for a while, but even though we're trying a lot of stuff to make sure
> that fork works, the OS has some funny notions sometimes, which make it
> hard to get fork 100% reliable.
> In this case, there's a subtil difference between the first shell
> started from make, and a forked subshell.  The difference is something
> to do with the size of $PATH which results in a different position of
> the main stack in the forked child process.  This breaks fork because
> fork semantics require to be able to reproduce the parent memory in the
> child process.
> Thanks for the test case.  I'm just investigating what happens exactly,
> and I have a few ideas how we can workaround this problem to make fork
> a bit more reliable in this situation.  This requires some fiddling
> around, so, just stay tuned for a couple of days.

After some experimenting, it looks like I found a surprisingly simple
solution.  I checked in a patch to CVS, and I'm just generating a new
developer's snapshot.  Please try the just uploaded today's snapshot
from  Exchanging just the DLL should be
sufficient.  Please report back.

Btw., there's an upper bound for the size of a single environment
variable of about 32K.  Right now, if $PATH reaches this size, forking
any further process fails silently.  I don't know why yet, but as far
as I'm concerned this is no pressing issue.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Problem reports:
Unsubscribe info:

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