On 02/01, Stas Sergeev wrote:
>
> >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

> >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.

Reply via email to