Re: Interrupt/Exception caught (code = 0xc0000005, addr = 0x77c478ac)

Eli Zaretskii <[email protected]>
Newsgroups gmane.comp.gnu.make.windows
Message-ID <[email protected]>
> Date: Mon, 14 Sep 2009 12:56:10 -0700 (PDT)
> From: duanec <[email protected]>
> Cc: 
> 
> 
> The latest distribution, make-3.81-20090911-mingw32-bin, has a problem
> resulting in: Interrupt/Exception caught (code = 0xc0000005, addr =
> 0x420c2a)
> 
> In my (limited tests) the "triggering" condition seems to be:
>     Have _no_ PATH
>     Call GNU make
>     Makefile calls $(shell) function.

Funny that you should report it, because a patch to fix this bug was
submitted just yesterday.  Here it is:

2009-09-14  Rafi Einstein  <[email protected]>  (tiny patch)

	* w32/subproc/sub_proc.c (process_begin): Check *ep non-NULL
	inside the loop that looks up environment for PATH.


Index: w32/subproc/sub_proc.c
===================================================================
RCS file: /sources/make/make/w32/subproc/sub_proc.c,v
retrieving revision 1.19
diff -u -r1.19 sub_proc.c
--- w32/subproc/sub_proc.c	14 Mar 2009 14:42:06 -0000	1.19
+++ w32/subproc/sub_proc.c	14 Sep 2009 18:17:21 -0000
@@ -441,13 +441,14 @@
 	/* Use the Makefile's value of PATH to look for the program to
 	   execute, because it could be different from Make's PATH
 	   (e.g., if the target sets its own value.  */
-	for (ep = envp; ep; ep++) {
-		if (strncmp (*ep, "PATH=", 5) == 0
-		    || strncmp (*ep, "Path=", 5) == 0) {
-			path_var = *ep + 5;
-			break;
+	if (envp)
+		for (ep = envp; *ep; ep++) {
+			if (strncmp (*ep, "PATH=", 5) == 0
+			    || strncmp (*ep, "Path=", 5) == 0) {
+				path_var = *ep + 5;
+				break;
+			}
 		}
-	}
 	exec_handle = find_file(exec_path, path_var,
 				exec_fname, sizeof(exec_fname));
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.