Skip to content
  • jD91mZM2's avatar
    WIP(ptrace): Only use non-signal stack when using a default handler · 6a3825d4
    jD91mZM2 authored
    This is a curious problem and it's really hard to solve it in a way
    that doesn't feel hacky. On one hand, of course you want to be able to
    modify and intercept what happens when you use a signal, right? On the
    other hand, changes made to the context (especially singlestepping)
    while a signal is handled (such as `SIGSTOP`) are not preserved since
    the stack is restored after the signal handler was invoked.
    
    I think what we have in this change makes sense anyway, as we don't
    really want users modifying registers and other data in the default
    signal behavior that occurs **in kernel mode**. Also trying to use
    `PTRACE_SINGLESTEP` will set the singlestep flag only if in a
    user-mode signal handler, else it will set it on the instruction after
    the signal handling, which I guess makes sense since it can't affect
    the kernel-mode code that runs the default handler.
    
    I don't know. Help. Pls.
    6a3825d4