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 Thu, 23 May 2013, Corinna Vinschen wrote:

> 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 http://cygwin.com/snapshots/  Exchanging just the DLL should be
> sufficient.  Please report back.

I just tried the snapshot cygwin dll on the win2008 box - and it
appears to work! [both for the test case and the actual build that
triggered the problem]. This run is with about 20K chars in PATH

> 
> 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.

Sure - hopefully no one has such huge PATHs - so not an issue.

thanks!

Satish

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


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