On 2014-10-25 13:34, Gonglei wrote: > Hi, > >> Subject: [Qemu-devel] [PATCH] main-loop.c: Handle SIGINT, SIGHUP and >> SIGTERM synchronously >> >> Add the termination signals SIGINT, SIGHUP and SIGTERM to the >> list of signals which we handle synchronously via a signalfd. >> This avoids a race condition where if we took the SIGTERM >> in the middle of qemu_shutdown_requested: >> int r = shutdown_requested; >> [SIGTERM here...] >> shutdown_requested = 0; >> >> then the setting of the shutdown_requested flag by >> termsig_handler() would be lost and QEMU would fail to >> shut down. This was causing 'make check' to hang occasionally. >> >> Signed-off-by: Peter Maydell > > I met a really upset thing after this patch, which I can't using gdb debug > Qemu process well. I use gdb attaching a Qemu process, and press 'c' to continue > executing. When I want to set a breakpoint for debugging, then press 'ctrl + c', > the Qemu will exit, because the SIGINT signal is captured by Qemu now. :( > > What's your opinion? Thanks. Confirmed, you cannot interrupt a running qemu from gdb anymore. I think this patch has to be reverted and the original issue fixed by making qemu_shutdown_requested signal-safe. Should be simple, just convert shutdown_requested into a counter. Need not be atomic, all happens over the main thread anyway. Jan