Jamie Lokier writes ("Re: [Xen-devel] Re: [Qemu-devel] [PATCH 01/13] Handle
terminating signals."):
A quick read of Glibc 2.3.1 source says its AIO code does not change
the signal mask when it creates an AIO handling thread.
Thanks for investigating that.
(This might be a Glibc bug - threads you don't know about shouldn't be
receiving your signals, should they?)
Yes, it's a bug. (I wonder why my test program didn't expose it.)
That means if it wasn't masked when you issued the first AIO request,
it won't be masked in that thread.
In practice since we use aio this probably means we can't rely on
signal blocking except for signals which qemu keeps blocked `nearly
all' the time. So pipe-to-self in the signal handler is the way to
go.