From: Jeff D. <jd...@ka...> - 2001-04-07 13:37:05
|
hn...@ma... said: > I have a patch to restore terminal settings when killed, and once in a > time it also to killed any slave processes (gdb, xterm windows and so > on). The killing part unfortunately no longer works in -6um as UML no > longer keeps a central repository of it's started slaves.. It should work to just have your patch call do_exitcalls(). Jeff |
From: Jeff D. <jd...@ka...> - 2001-04-07 23:45:46
|
hn...@ma... said: > Not quite. do_exitcalls() tries to shut down far to many things to be > used safely here. For the "killed" handler only host resources not > automatically shut down on process termination should be shut down. > Currently this is only slave processes for debugger and virtual > terminals I think. OK, why don't you decide which handlers need to be called in dire circumstances. Then we can have them called by dire_exitcalls, which itself is an exitcall, and the dire distress handler can just call dire_exitcalls. How does that sound? Jeff |
From: Henrik N. <hn...@ma...> - 2001-04-08 14:59:41
|
I would prefer a more direct approach. I see what I am doing here as more of the equivalence of pulling the power plug or pushing the hard reset button. The only thing that should be cleaned up is the host, preferably nothing in the UML should be touched. This to make sure it always works even if the UML kernel is in a very bad state. Similary it would probably be good if the machine shut down nicely on SIGHUP, more or less emulating "Control-Alt-Del", but this can also be done via the upcoming UML control channel.. So what I would like to see is a call to only do the absolutely minimum cleanup to release any host resources used. This is * Killing the debugger * Killing any virtual terminal xterms * Maybe killing the I/O threads if needed.. /Henrik Jeff Dike wrote: > hn...@ma... said: > > Not quite. do_exitcalls() tries to shut down far to many things to be > > used safely here. For the "killed" handler only host resources not > > automatically shut down on process termination should be shut down. > > Currently this is only slave processes for debugger and virtual > > terminals I think. > > OK, why don't you decide which handlers need to be called in dire > circumstances. Then we can have them called by dire_exitcalls, which itself > is an exitcall, and the dire distress handler can just call dire_exitcalls. > > How does that sound? > > Jeff |
From: <lis...@os...> - 2001-04-09 15:04:13
|
Henrik Nordstrom writes: > > Similary it would probably be good if the machine shut down nicely on SIGHUP, > more or less emulating "Control-Alt-Del", but this can also be done via the > upcoming UML control channel.. It would be useful to pass some signals through to the guest's init process. C-A-D can be emulared by giving init SIGINT SIGPWR is useful too, for those with a UPS. |
From: Jeff D. <jd...@ka...> - 2001-04-08 16:25:56
|
hn...@ma... said: > I would prefer a more direct approach. How is what I proposed indirect? > So what I would like to see is a call to only do the absolutely > minimum cleanup to release any host resources used. This is > * Killing the debugger > * Killing any virtual terminal xterms > * Maybe killing the I/O threads if needed.. Which is exactly what my proposal would do. Jeff |
From: Henrik N. <hn...@ma...> - 2001-04-08 22:45:42
Attachments:
uml-kill-crude_v2.patch
|
You are right. I thought these exit handlers did more than what they do, but now I see they only do what I want. Attached is a very crude version of my kill patch updated to 2.4.3. As you say it should be done via some kind of exit handlers rather than calling each manually. This also goes for how to restore the terminal settings I think. On forced exit, call kill_off_processes() exit_debugger() stdio_console_exit() (this is missing it seems.. added in the patch) ssl_exit() kill_io_thread() What is missing (apart from some reasonable code structure for managing this) is a call to kill the debugger. The debugger is normally killed by tracing_halt(), but if I call this from here things go very bad.. (exit_debugger only kills the xterm displaying the debugger output, not the gdb process) /Henrik Jeff Dike wrote: > hn...@ma... said: > > I would prefer a more direct approach. > > How is what I proposed indirect? > > > So what I would like to see is a call to only do the absolutely > > minimum cleanup to release any host resources used. This is > > * Killing the debugger > > * Killing any virtual terminal xterms > > * Maybe killing the I/O threads if needed.. > > Which is exactly what my proposal would do. > > Jeff > > _______________________________________________ > User-mode-linux-devel mailing list > Use...@li... > http://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel |
From: Henrik N. <hn...@ma...> - 2001-04-07 22:38:58
|
Not quite. do_exitcalls() tries to shut down far to many things to be used safely here. For the "killed" handler only host resources not automatically shut down on process termination should be shut down. Currently this is only slave processes for debugger and virtual terminals I think. The do_exitcalls() registry on my UML machine contains: exit_shmem_fs exit_pipe_fs exit_script_binfmt exit_elf_binfmt exit_proc_fs exit_ext2_fs exit_cramfs_fs af_unix_exit exit_hostfs exit_debugger remove_pid_file ssl_exit kill_io_thread I guess I could try to call exit_debugger(), remove_pid_file(), ssl_exit(), kill_io_thread() manually, but this still feels a bit too heavy for this purpose (quick unscheduled termination of the UML machine, usually used after a kernel panic or hang) and is very dependent on the set of UML drivers enabled.. Hmm.. tried the above small list of exit handlers and it did not work very well.. only the debugger xterm was killed. gdb and virtual terminal xterms was still left running. To do this cleanly I think a registry of external processes are needed rather than a list of exit handlers.. /Henrik Jeff Dike wrote: > hn...@ma... said: > > I have a patch to restore terminal settings when killed, and once in a > > time it also to killed any slave processes (gdb, xterm windows and so > > on). The killing part unfortunately no longer works in -6um as UML no > > longer keeps a central repository of it's started slaves.. > > It should work to just have your patch call do_exitcalls(). > > Jeff |