Message ID | 001001cd334c$e8d95260$ba8bf720$@Dovgaluk@ispras.ru |
---|---|
State | New |
Headers | show |
Am 16.05.2012 12:16, schrieb Pavel Dovgaluk: > I use qemu under Windows and it has two windows when executes - console and SDL ones. > When I close SDL window main loop function terminates correctly, and when I close > console window to terminate qemu then the code after main loop is not executed. Is there no way to catch this case and use the regular shutdown mechanism there as well? I'm not against your patch and it's probably 1.1 material, but there may be more shutdown logic that we're missing if you close the console window. Kevin
Il 22/05/2012 10:51, Kevin Wolf ha scritto: > Am 16.05.2012 12:16, schrieb Pavel Dovgaluk: >> I use qemu under Windows and it has two windows when executes - console and SDL ones. >> When I close SDL window main loop function terminates correctly, and when I close >> console window to terminate qemu then the code after main loop is not executed. > > Is there no way to catch this case and use the regular shutdown > mechanism there as well? > > I'm not against your patch and it's probably 1.1 material, but there may > be more shutdown logic that we're missing if you close the console window. Looks like qemu_ctrl_handler (in os-win32.c) needs to do something like termsig_handler (in os-posix.c) instead of a plain exit. Paolo
> From: Paolo Bonzini [mailto:paolo.bonzini@gmail.com] On Behalf Of Paolo Bonzini > Il 22/05/2012 10:51, Kevin Wolf ha scritto: > > Am 16.05.2012 12:16, schrieb Pavel Dovgaluk: > >> I use qemu under Windows and it has two windows when executes - console and SDL ones. > >> When I close SDL window main loop function terminates correctly, and when I close > >> console window to terminate qemu then the code after main loop is not executed. > > > > Is there no way to catch this case and use the regular shutdown > > mechanism there as well? > > > > I'm not against your patch and it's probably 1.1 material, but there may > > be more shutdown logic that we're missing if you close the console window. > > Looks like qemu_ctrl_handler (in os-win32.c) needs to do something like > termsig_handler (in os-posix.c) instead of a plain exit. I tried to call qemu_system_shutdown_request() instead of exit() there, but Windows kills qemu before it finishes cleanup work. Pavel Dovgaluk
Il 23/05/2012 08:48, Pavel Dovgaluk ha scritto: >>> > > I'm not against your patch and it's probably 1.1 material, but there may >>> > > be more shutdown logic that we're missing if you close the console window. >> > >> > Looks like qemu_ctrl_handler (in os-win32.c) needs to do something like >> > termsig_handler (in os-posix.c) instead of a plain exit. > I tried to call qemu_system_shutdown_request() instead of exit() there, but Windows kills qemu > before it finishes cleanup work. Uff... http://stackoverflow.com/questions/3640633/c-setconsolectrlhandler-routine-issue says more or less what you have to do. Paolo
> From: Paolo Bonzini [mailto:paolo.bonzini@gmail.com] On Behalf Of Paolo Bonzini > Il 23/05/2012 08:48, Pavel Dovgaluk ha scritto: > >>> > > I'm not against your patch and it's probably 1.1 material, but there may > >>> > > be more shutdown logic that we're missing if you close the console window. > >> > > >> > Looks like qemu_ctrl_handler (in os-win32.c) needs to do something like > >> > termsig_handler (in os-posix.c) instead of a plain exit. > > I tried to call qemu_system_shutdown_request() instead of exit() there, but Windows kills > qemu > > before it finishes cleanup work. > > Uff... > http://stackoverflow.com/questions/3640633/c-setconsolectrlhandler-routine-issue > says more or less what you have to do. Thank you! I have prepared another patch based on this information. Pavel Dovgaluk
diff --git a/vl.c b/vl.c index 23ab3a3..b6cfd29 100644 --- a/vl.c +++ b/vl.c @@ -3650,10 +3650,10 @@ int main(int argc, char **argv, char **envp) } os_setup_post(); + atexit(bdrv_close_all); resume_all_vcpus(); main_loop(); - bdrv_close_all(); pause_all_vcpus(); net_cleanup(); res_free();