Cygwin: pty: Prevent deadlock on echo output.
- If the slave process writes a lot of text output, doecho() can cause deadlock. This is because output_mutex is held in slave:: write() and if WriteFile() is blocked due to pipe full, doecho() tries to acquire output_mutex and gets into deadlock. With this patch, the deadlock is prevented on the sacrifice of atomicity of doecho().
This commit is contained in:
		
							parent
							
								
									b04aea00f1
								
							
						
					
					
						commit
						bddd9c1c41
					
				|  | @ -496,11 +496,9 @@ void | |||
| fhandler_pty_master::doecho (const void *str, DWORD len) | ||||
| { | ||||
|   ssize_t towrite = len; | ||||
|   acquire_output_mutex (mutex_timeout); | ||||
|   if (!process_opost_output (echo_w, str, towrite, true, | ||||
| 			     get_ttyp (), is_nonblocking ())) | ||||
|     termios_printf ("Write to echo pipe failed, %E"); | ||||
|   release_output_mutex (); | ||||
| } | ||||
| 
 | ||||
| int | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue