This is the mail archive of the
mailing list for the Cygwin project.
Re: Bash silently truncates the Command Line when called programatically via CreateProcess as MAXPATHLEN was reduced to 8192 from 16384
- From: Christopher Faylor <cgf-use-the-mailinglist-please at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Mon, 26 May 2014 16:08:57 -0400
- Subject: Re: Bash silently truncates the Command Line when called programatically via CreateProcess as MAXPATHLEN was reduced to 8192 from 16384
- Authentication-results: sourceware.org; auth=none
- References: <CANMjiJqz6uJ7pp=iS5FK_ZnS9nxCT1fY+EndcgzPan7sv2pXJA at mail dot gmail dot com>
- Reply-to: cygwin at cygwin dot com
On Mon, May 26, 2014 at 08:59:56PM +0530, Abhijit Bhattacharjee wrote:
>On a typical configuration, we use gmake on windows as the build
>system. GMAKE calls the Cygwin bash in order to invoke the MSVS
>compiler in-order to satisfy the dependency if a rule to call the
>compiler is present.
If you're using Cygwin's make it will not truncate paths if it is
running cygwin programs. Not sure what MSVS is.
>Now, for certain modules, the command line was seemingly getting
>truncated. On investigating further it revealed the reason for the
>truncation was because in the glob.cc, MAXPATHLEN was now defined as
>8192 so, when bash was compiled with the changed crt code, the problem
>started to emerge.
>Now, it also seems that there was a discussion
>Corinna mentioned about decreasing the size to 4096 and later
>increasing it to 8192. Unfortunately, for our case, 8192 is low a
>limit and ideally the previous limit of 16384 was working perfectly.
>The Argument that Corinna placed was because the default stack size is
>2 Megs and sizeof(Char)==8, a local array of 8* 16384 would be too
>strenuous for the stack.
>It was still not clear to me as to why?
>1. The Temporary buffer was not allocated on heap?
The source code comes from FreeBSD. Managing this on the heap would
mean a rewrite and would have its own problems. Since this isn't really
an issue when Cygwin calls Cygwin programs it likely isn't really high
on anyone's priority list.
>2. Why the entire argument (both quoted and non-quoted string) was
>passed to the glob module. If instead, the argument string could had
>been tokeinized as interleaving quoted and non-quoted string, the
>restriction imposed on the argument length would be alleviated. What I
>am envisaging is, currently in the globify module, you are escaping
>all the quoted characters to demarcate from the non-quoted characters
>before calling glob once, so that the glob can only expand non-quoted
>sub-string. Instead, if we could call glob multiple times whenever we
>encounter a sub-string of non-quoted string, wouldn't it be cleaner?
I don't really know what you're talking about but patches are always
better than word descriptions.
It sounds like you're using a non-Cygwin make to call a Cygwin process.
If that is the case then it seems like the trivial fix is "Don't Do
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple