make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with latest Cygwin make patch; builds OK but binary segfaul


From: Eli Zaretskii
Subject: Re: Problems with latest Cygwin make patch; builds OK but binary segfaults
Date: Thu, 24 Aug 2006 21:38:10 -0400

> From: "William Sheehan" <address@hidden>
> Date: Thu, 24 Aug 2006 17:23:04 -0700
> 
> I was interested in trying out Bill Hoffman's patch that would add DOS path
> support to the Cygwin make binary.

Thank you for taking time to check this.

> This process seems to work in that I don't receive any obvious problems
> during.  However, when I try to use the final binary, it segfaults (or stack
> overflow when invoked from cmd.exe).  I have attached a zip file containing
> relevant files that will (hopefully) determine if I'm doing something
> bizarre or if this is a legitimate problem.  Here are the contents:

It could be an infinite recursion in construct_command_argv_internal,
but it could also be something else.  First, is it reasonable to get a
stack overflow in a Cygwin program after only 11 recursive invocations
of construct_command_argv_internal?  Can you verify directly that the
stack overflowed?  If not, we need to know what caused the crash.

Second, do I understand correctly that you were running "make clean"
in the top-level directory of make-3.81 source tree?  You didn't
mention that explicitly anywhere (sorry if I missed something), and I
wouldn't want to guess.  I need to know what part of the Makefile
caused the crash.  If possible, could you please craft a minimal
Makefile that has only the necessary bits to recreate the problem?

Third, could you please step through the code in
construct_command_argv_internal and see what part of the code causes
it to recurse so many times, then compare that with the unpatched
source of Make for the same command, and see what is causing the
endless recursion?  I don't have Cygwin installed, so I cannot do this
myself.

> cygwin-make-config.patch -- Patch for dospaths.m4 (as an aside, what patch
> process recognizes subdirectories as a patch target?

This is a standard feature of GNU Patch: if the patch file names the
file config/dospaths.m4, Patch will look in the config/ subdirectory.
What command did you use to invoke Patch, and what version of Patch is
that?

> Replacing the binary with the original make 3.81-1 binary did not
> change the results.

Are you saying that the original unpatched binary of Make 3.81 also
crashes with the same Makefile?  If so, that doesn't seem to say
anything about the patch itself, right?

> My own analysis of the problem is that there is an infinite recursion call
> to construct_command_argv_internal with the line parameter; it keeps getting
> called with more and more backslash characters.

It is normal for Make to recurse once in
construct_command_argv_internal, when the shell is called to run the
command.  But the recursion should stop after the first level, not go
on further.  To unlock this riddle, we need to understand why it
doesn't stop.

TIA




reply via email to

[Prev in Thread] Current Thread [Next in Thread]