On 02/01, Stas Sergeev wrote:
quoted
So the sequence is
// running on alt stack
sigaltstack(SS_DISABLE);
temporary_run_on_another_stack();
sigaltstack(SS_ONSTACK);
and SS_DISABLE saves us from another SA_ONSTACK signal, right?
Yes.
Note: there is a test-case in that patch serie from which
you can see or copy/paste the sample code.
OK, I wasn't cc'ed
quoted
But afaics it can only help after we change the stack. Suppose that SA_ONSTACK signal
comess before temporary_run_on_another_stack(). get_sigframe() should be fine after
your changes (afaics), it won't pick the alt stack after SS_DISABLE.
However, unless I missed something save_altstack_ex() will record SS_ONSTACK in
uc_stack->ss_flags, and after return from signal handler restore_altstack() will
enable alt stack again?
I don't think so. Please see the following hunk:
Yes, see another email, I already noticed this change.
So I understand this is very confusing, but I think the patch
is correct.
Not sure, but I can hardly read this patch and I can't apply it.
Do you think adding the SS_FORCE flag would be a better solution?
Yes, certainly. I see no point to remember that a thread actually has the alt stack
but it was disabled.
Oleg.