* spawn.cc (spawn_guts): Start pure-windows processes in a suspended state to
avoid potential DuplicateHandle problems.
This commit is contained in:
		| @@ -1,3 +1,8 @@ | |||||||
|  | 2007-03-28  Christopher Faylor  <me@cgf.cx> | ||||||
|  |  | ||||||
|  | 	* spawn.cc (spawn_guts): Start pure-windows processes in a suspended | ||||||
|  | 	state to avoid potential DuplicateHandle problems. | ||||||
|  |  | ||||||
| 2007-03-13  Eric Blake  <ebb9@byu.net> | 2007-03-13  Eric Blake  <ebb9@byu.net> | ||||||
|  |  | ||||||
| 	* include/cygwin/stat.h (S_TYPEISMQ, S_TYPEISSEM, S_TYPEISSHM): | 	* include/cygwin/stat.h (S_TYPEISMQ, S_TYPEISSEM, S_TYPEISSHM): | ||||||
|   | |||||||
| @@ -455,7 +455,7 @@ spawn_guts (const char * prog_arg, const char *const *argv, | |||||||
|      So we have to start the child in suspend state, unfortunately, to avoid |      So we have to start the child in suspend state, unfortunately, to avoid | ||||||
|      a race condition. */ |      a race condition. */ | ||||||
|   if (!newargv.win16_exe |   if (!newargv.win16_exe | ||||||
|       && (mode != _P_OVERLAY || cygheap->fdtab.need_fixup_before ())) |       && (!ch.iscygwin () || mode != _P_OVERLAY || cygheap->fdtab.need_fixup_before ())) | ||||||
|     c_flags |= CREATE_SUSPENDED; |     c_flags |= CREATE_SUSPENDED; | ||||||
|  |  | ||||||
|   runpath = null_app_name ? NULL : (const char *) real_path; |   runpath = null_app_name ? NULL : (const char *) real_path; | ||||||
| @@ -609,11 +609,9 @@ loop: | |||||||
|       if (!newargv.win16_exe && myself->wr_proc_pipe) |       if (!newargv.win16_exe && myself->wr_proc_pipe) | ||||||
| 	{ | 	{ | ||||||
| 	  if (!looped) | 	  if (!looped) | ||||||
| 	    { | 	    myself->sync_proc_pipe ();	/* Make sure that we own wr_proc_pipe | ||||||
| 	      myself->sync_proc_pipe ();	/* Make sure that we own wr_proc_pipe | 					   just in case we've been previously | ||||||
| 						   just in case we've been previously | 					   execed. */ | ||||||
| 						   execed. */ |  | ||||||
| 	    } |  | ||||||
| 	  orig_wr_proc_pipe = myself->dup_proc_pipe (pi.hProcess); | 	  orig_wr_proc_pipe = myself->dup_proc_pipe (pi.hProcess); | ||||||
| 	} | 	} | ||||||
|       pid = myself->pid; |       pid = myself->pid; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user