Re: sigaltstack breaks swapcontext()

From: Stas Sergeev
Date: Thu Jan 07 2016 - 14:10:31 EST


07.01.2016 20:23, Andy Lutomirski ÐÐÑÐÑ:
On Thu, Jan 7, 2016 at 7:33 AM, Stas Sergeev <stsp@xxxxxxx> wrote:
06.01.2016 22:53, Andy Lutomirski ÐÐÑÐÑ:
On Wed, Jan 6, 2016 at 11:31 AM, Stas Sergeev <stsp@xxxxxxx> wrote:
Exactly.
Do you think this can be ignored?
A man page should then be corrected with EPERM and the
above note removed, right?

I think it can be ignored. I'd go the SS_FORCE route, though, to
maintain POSIX compliance.
I think such a flag would be a wrong thing to do.
Allowing only SS_DISABLE (without any new flags) keeps
you still "compatible with posix", and anything beyond
SS_DISABLE in a sighandler is not needed.

So I think we only have the following options:
1. Remove the check and forget (if anything, glibc can
add the EPERM check to stay compatible with crap).
2. Allow only SS_DISABLE. This will mean a large patch,
touching all arches, but the bonus is the compatibility
with posix, that no one needs in this particular case.
Why does allowing SS_DISABLE require touching all arches?
I mean, if we also consistently return SA_ONSTACK even
after SS_DISABLE. This will require kernel to save the
ss_flags separately, and not to use "if (ss_size)" checks.
Of course if we don't want to return SA_ONSTACK, we
should just remove EPERM as I don't think it serves any
other purpose than that.