On Wed, Apr 29, 2020 at 03:44:18PM -0400, Daniele Buono wrote: s/sigalstack/sigaltstack/ in the commit message. > LLVM's SafeStack instrumentation cannot be used inside signal handlers > that make use of sigaltstack(). > Since coroutine-sigaltstack relies on sigaltstack(), it is not > compatible with SafeStack. The resulting binary is incorrect, with > different coroutines sharing the same unsafe stack and producing > undefined behavior at runtime. > To avoid this, we add a check in coroutine-sigaltstack that throws a > preprocessor #error and interrupt the compilation if SafeStack is > enabled. > > Signed-off-by: Daniele Buono > --- > util/coroutine-sigaltstack.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/util/coroutine-sigaltstack.c b/util/coroutine-sigaltstack.c > index f6fc49a0e5..b7cdc959f8 100644 > --- a/util/coroutine-sigaltstack.c > +++ b/util/coroutine-sigaltstack.c > @@ -30,6 +30,10 @@ > #include "qemu-common.h" > #include "qemu/coroutine_int.h" > > +#ifdef CONFIG_SAFESTACK > +#error "SafeStack does not work with sigaltstack's implementation" > +#endif Neither the commit description nor the #error message explain why it doesn't work. Could it work in the future or is there a fundamental reason why it will never work? Stefan