The patch seems to have worked flawlessly. Thank You! I would love to see a new distribution asap (as I prefer to use distribution built binaries when reasonable) :) So, I'd appreciate it if you could let me know if/when/where you publish a new version.
Below: - Rough sketch of what I tested. I'm entirely convinced this bug is gone. (Examining the change: it looks very unlikely any new bugs were introduced). - Details on how I built it (thanks! for the details in the distribution readme) - Alternate patch (functionally identical; minor code simplification) .duanec. ---------------------------------------------------------------- Rough sketch of what I tested: Note: I test (almost) nothing other than the fixing of the Interrupt/Exception caused by the $(shell) function. That said, I feel I tested this limited scope quite thoroughly. With PATH not set in the environment For 0 to 1025 envvars in the environment For 25 different makefiles each with a different command line length - some with cmd.exe built-in commands - some with filename.exe commands - some with filename (no .exe extension) commands - some with commands that existed - some with commands that did not exist run newly patched make & check results Repeated above WITH path set in environment (with 1 to 1026 envvars). Ran similar (limitted) tests checking the return value of the $(shell) function. ---------------------------------------------------------------- ---------------------------------------------------------------- Alternate patch (functionally identical; minor code simplification): diff -du new/function.c old/function.c --- new/function.c 2009-09-01 11:50:50.984839900 -0500 +++ old/function.c 2009-09-01 11:51:14.781714900 -0500 @@ -1429,7 +1429,7 @@ void -windows32_openpipe (int *pipedes, int *pid_p, char **command_argv) +windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp) { SECURITY_ATTRIBUTES saAttr; HANDLE hIn; @@ -1476,7 +1476,7 @@ /* make sure that CreateProcess() has Path it needs */ sync_Path_environment(); - if (!process_begin(hProcess, command_argv, environ, command_argv[0], NULL)) { + if (!process_begin(hProcess, command_argv, envp, command_argv[0], NULL)) { /* register process for wait */ process_register(hProcess); @@ -1634,7 +1634,7 @@ #ifdef WINDOWS32 - windows32_openpipe (pipedes, &pid, command_argv); + windows32_openpipe (pipedes, &pid, command_argv, envp); /* Restore the value of just_print_flag. */ just_print_flag = j_p_f; ---------------------------------------------------------------- ---------------------------------------------------------------- How I built it: Installed MinGW per http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite. // gcc.exe (GCC) 3.4.5 (mingw-vista special r3) Used my existing cygnus install with above MinGW/bin pre-pended to the path. Then # get clean source cd /c/temp/mingw32-make-3.81-20080326-src.tar rm -rf make-3.81-patched tar -xzvf ../mingw32-make-3.81-20080326-src.tar.gz # # apply the patch cd ./make-3.81-patched mv function.c function.c.ORIGINAL cp ../function.c function.c diff -du function.c.ORIGINAL function.c # # put MinGW/bin first on the path export PATH=/c/MinGW/bin:$PATH # #- build per this readme: mingw32-make-3.81-20080326-3.tar/doc/mingw32-make/README.mingw ../make-3.81-patched/configure \ --disable-dependency-tracking \ --disable-nls \ --enable-case-insensitive-file-system \ --disable-job-server \ --disable-rpath \ --program-prefix=mingw32- \ --host=i386-pc-mingw32 \ --build=i386-pc-mingw32 \ --target=i386-pc-mingw32 \ --prefix=/mingw mv config.h config.orig ; sed -e 's/:/;/' config.orig > config.h make CFLAGS="-s -O2 -mms-bitfields -mtune=i686" for i in `find . -type f -iname dir`; do rm $i; done #- did not do this: make prefix=`cd ../dist;pwd` install ---------------------------------------------------------------- -- View this message in context: http://www.nabble.com/Interrupt-Exception-caught-%28code-%3D-0xc0000005%2C-addr-%3D-0x77c478ac%29-tp25214756p25244276.html Sent from the Gnu - Make - W32 mailing list archive at Nabble.com. _______________________________________________ Make-w32 mailing list Make-w32@gnu.org http://lists.gnu.org/mailman/listinfo/make-w32