mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 12:07:12 +00:00 
			
		
		
		
	Use SIGTERM in replace of SIGQUIT
SIGTERM is the normal signal to use when instructing a process to exit. The only difference is that an unhandled SIGQUIT is meant to generate a coredump, which is not what we want, but in practice I encountered an issue where SIGTERM seemed to be deliverable more reliably than SIGQUIT (in tests using multiple signal helpers). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
		
							parent
							
								
									4d4f4b213c
								
							
						
					
					
						commit
						4f7d4dcae5
					
				@ -761,7 +761,7 @@ static void fork_helper_exit_handler(int sig)
 | 
			
		||||
			/* Someone forgot to fill up the array? */
 | 
			
		||||
			assert(pid != 0);
 | 
			
		||||
 | 
			
		||||
			ret = kill(pid, SIGQUIT);
 | 
			
		||||
			ret = kill(pid, SIGTERM);
 | 
			
		||||
			assert(ret == 0);
 | 
			
		||||
			while (waitpid(pid, &status, 0) == -1 &&
 | 
			
		||||
			       errno == EINTR)
 | 
			
		||||
@ -821,13 +821,14 @@ void igt_stop_helper(struct igt_helper_process *proc)
 | 
			
		||||
	assert(proc->running);
 | 
			
		||||
 | 
			
		||||
	ret = kill(proc->pid,
 | 
			
		||||
		   proc->use_SIGKILL ? SIGKILL : SIGQUIT);
 | 
			
		||||
		   proc->use_SIGKILL ? SIGKILL : SIGTERM);
 | 
			
		||||
	assert(ret == 0);
 | 
			
		||||
 | 
			
		||||
	while (waitpid(proc->pid, &status, 0) == -1 &&
 | 
			
		||||
	       errno == EINTR)
 | 
			
		||||
		;
 | 
			
		||||
	igt_assert(WIFSIGNALED(status) &&
 | 
			
		||||
		   WTERMSIG(status) == (proc->use_SIGKILL ? SIGKILL : SIGQUIT));
 | 
			
		||||
		   WTERMSIG(status) == (proc->use_SIGKILL ? SIGKILL : SIGTERM));
 | 
			
		||||
 | 
			
		||||
	proc->running = false;
 | 
			
		||||
 | 
			
		||||
@ -867,7 +868,7 @@ static void children_exit_handler(int sig)
 | 
			
		||||
 | 
			
		||||
	for (int nc = 0; nc < num_test_children; nc++) {
 | 
			
		||||
		int status = -1;
 | 
			
		||||
		ret = kill(test_children[nc], SIGQUIT);
 | 
			
		||||
		ret = kill(test_children[nc], SIGTERM);
 | 
			
		||||
		assert(ret == 0);
 | 
			
		||||
 | 
			
		||||
		while (waitpid(test_children[nc], &status, 0) == -1 &&
 | 
			
		||||
 | 
			
		||||
@ -372,7 +372,7 @@ void igt_waitchildren(void);
 | 
			
		||||
/**
 | 
			
		||||
 * igt_helper_process_t:
 | 
			
		||||
 * @running: indicates whether the process is currently running
 | 
			
		||||
 * @use_SIGKILL: whether the helper should be terminated with SIGKILL or SIGQUIT
 | 
			
		||||
 * @use_SIGKILL: whether the helper should be terminated with SIGKILL or SIGTERM
 | 
			
		||||
 * @pid: pid of the helper if @running is true
 | 
			
		||||
 * @id: internal id
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user