Patch: Bug: Shell fork/exec avoidance in make-3.79.1-3

Bernard Dautrevaux
Wed Jun 27 00:53:00 GMT 2001

> -----Original Message-----
> From: Christopher Faylor [ ]
> Sent: Tuesday, June 26, 2001 10:14 PM
> To:
> Subject: Re: Patch: Bug: Shell fork/exec avoidance in make-3.79.1-3
> On Tue, Jun 26, 2001 at 08:56:50PM +0200, Bernard Dautrevaux wrote:
> >> I've included a patch below that changes all the char[] definitions
> >> in job.c to char*.
> >
> >I don't think that is the problem; if I look at your patch 
> below, the char[]
> >definitions you change in char* are only used on AMIGA or 
> VMS, but *NOT* on
> >CYGWIN... ;-(
> Sorry, no.  The original poster obviously did some research 
> here.  There
> is a definite problem between 'char *' and 'char []' in the
> default_shell definition.

Sorry for the confusion; it appears I was using the source for
make-3.79.1-2, not -3, and in -2 the ifdefs in job.c were a bit different,
so that the first ifdef read:

#ifdef WIN32_OR_CYGWIN

and thus all was working OK... It was partly my fault (and partly due to
working a bit late yesterday evening), partly due to an obvious regression
in -3 compared to -2. In fact I was even once more puzzled how well broken
code can work: I would have expected a more brutal error (like a DrWatson
popup) for a variable being used in one part of the code as a pointer and in
another as an array of chars. 

In fact the code in -2 was correct as the "char*" definition in main.c was
only present on CYGWIN and MSDOS, two cases where it was correctly defined
as char* in job.c. But of course, defining ALL default_shell as "char*" is
The Right Thing (TM).

> >If you look at my previous message (posted about in paralell 
> with your),
> >you'll see that just recompiling the code without any change 
> allow me to get
> >a working make. I suspect your change (that does nothing on 
> CYGWIN) is just
> >exercising the same behaviour. IMHO it's just the cygwin 
> package that was
> >compiled in a buggy environment. 
> I build make on linux, like all of my packages.  To the best 
> of my knowledge,
> I have never had a corrupted environment.  I build everything 
> in a standard
> way using standard scripts.  If I detect an error, I correct 
> the script.

I can understand this; in fact I'm working exactly in the same way (although
for mingw32) and was only compiling natively under cygwin for the first time
since several years for these tests yesterday. 

> >IIRC it happens some time ago to Corinna to have a 
> screwed-up environment
> >that generated a working bash that shows a bug that disapear 
> after she
> >updates its environment. I suspect the make maintainer have 
> (or had) the
> >same problem...
> I suspect that your suspicion is wrong.

Sure it it :-) Anyway, if I had noticed that you were the cygwin make
maintainer I would have not suspected this but better looked at MY
environment (that in fact WAS a bit broken because I was using a version
that was too old to show the bug...).

In fact that shows a small problem with the 'patch' level of tools: there is
no way when you look at the source code or at the executable to know which
patch level you are using: both say 3.79.1, with no patch level ;-( With the
installed tool, you can look in the update.db file, but for the source...

Anyway as this is corrected, all is fine and I must congrat all those that
find the problem.


> cgf
> --
> Unsubscribe info:
> Bug reporting:
> Documentation:
> FAQ:         

Bernard Dautrevaux
Microprocess Ingenierie
97 bis, rue de Colombes
Tel:	+33 (0) 1 47 68 80 80
Fax:	+33 (0) 1 47 88 97 85

Unsubscribe info:
Bug reporting:

More information about the Cygwin mailing list