mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	preserve_exit: Ignore SIGHUP
closes #9274 ref #9028 If stdin closed then read_error_exit calls preserve_exit. Handling SIGHUP during preserve_exit would cause a premature teardown, and conflicts with e.g. ui_bridge_stop which waits for TUI to teardown. Vim ignores SIGHUP in its prepare_to_exit and getout_preserve_modified routines: /* Ignore SIGHUP, because a dropped connection causes a read error, which * makes Vim exit and then handling SIGHUP causes various reentrance * problems. */ signal(SIGHUP, SIG_IGN);
This commit is contained in:
		| @@ -52,6 +52,7 @@ | ||||
| #include "nvim/window.h" | ||||
| #include "nvim/os/os.h" | ||||
| #include "nvim/os/shell.h" | ||||
| #include "nvim/os/signal.h" | ||||
| #include "nvim/os/input.h" | ||||
| #include "nvim/os/time.h" | ||||
| #include "nvim/event/stream.h" | ||||
| @@ -2653,6 +2654,8 @@ void preserve_exit(void) | ||||
|   } | ||||
|  | ||||
|   really_exiting = true; | ||||
|   // Ignore SIGHUP while we are already exiting. #9274 | ||||
|   signal_reject_deadly(); | ||||
|   mch_errmsg(IObuff); | ||||
|   mch_errmsg("\n"); | ||||
|   ui_flush(); | ||||
|   | ||||
| @@ -117,6 +117,7 @@ static void ui_bridge_stop(UI *b) | ||||
|     if (stopped) {  // -V547 | ||||
|       break; | ||||
|     } | ||||
|     // TODO(justinmk): Remove this. Use a cond-wait above. #9274 | ||||
|     loop_poll_events(&main_loop, 10);  // Process one event. | ||||
|   } | ||||
|   uv_thread_join(&bridge->ui_thread); | ||||
|   | ||||
| @@ -6,6 +6,7 @@ local clear, command, nvim, nvim_dir = | ||||
| local eval, eq, retry = | ||||
|   helpers.eval, helpers.eq, helpers.retry | ||||
| local ok = helpers.ok | ||||
| local feed = helpers.feed | ||||
| local iswin = helpers.iswin | ||||
|  | ||||
|  | ||||
| @@ -87,5 +88,6 @@ describe('TermClose event', function() | ||||
|  | ||||
|     command('3bdelete!') | ||||
|     retry(nil, nil, function() eq('3', eval('g:abuf')) end) | ||||
|     feed('<c-c>:qa!<cr>') | ||||
|   end) | ||||
| end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes