Disable use of vfork()
vfork() is just too weird. For instance, in this build: http://hydra.nixos.org/build/3330487 the value fromHook.writeSide becomes corrupted in the parent, even though the child only reads from it. At -O0 the problem goes away. Probably the child is overriding some spilled temporary variable. If I get bored I may implement using posix_spawn() instead.
This commit is contained in:
		
							parent
							
								
									8541d27fce
								
							
						
					
					
						commit
						f794465ca8
					
				
					 2 changed files with 2 additions and 2 deletions
				
			
		|  | @ -116,7 +116,7 @@ AC_CHECK_HEADERS([sys/mount.h], [], [], | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Check for vfork. | # Check for vfork. | ||||||
| AC_FUNC_FORK() | #AC_FUNC_FORK() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Check for lutimes, optionally used for changing the mtime of | # Check for lutimes, optionally used for changing the mtime of | ||||||
|  |  | ||||||
|  | @ -355,7 +355,7 @@ void Goal::trace(const format & f) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Common initialisation performed in child processes. */ | /* Common initialisation performed in child processes. */ | ||||||
| void commonChildInit(Pipe & logPipe) | static void commonChildInit(Pipe & logPipe) | ||||||
| { | { | ||||||
|     /* Put the child in a separate session (and thus a separate
 |     /* Put the child in a separate session (and thus a separate
 | ||||||
|        process group) so that it has no controlling terminal (meaning |        process group) so that it has no controlling terminal (meaning | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue