Skip to content
  • Alessandro Arzilli's avatar
    proc: next, stepout should work on recursive goroutines (#831) · 35405583
    Alessandro Arzilli authored and Derek Parker's avatar Derek Parker committed
    Before this commit our temp breakpoints only checked that we would stay
    on the same goroutine.
    However this isn't enough for recursive functions we must check that we
    stay on the same goroutine AND on the same stack frame (or, in the case
    of the StepOut breakpoint, the previous stack frame).
    
    This commit:
    1. adds a new synthetic variable runtime.frameoff that returns the
       offset of the current frame from the base of the call stack.
       This is similar to runtime.curg
    2. Changes the condition used for breakpoints on the lines of the
       current function to check that runtime.frameoff hasn't changed.
    3. Changes the condition used for breakpoints on the return address to
       check that runtime.frameoff corresponds to the previous frame in the
       stack.
    4. All other temporary breakpoints (the step-into breakpoints and defer
       breakpoints) remain unchanged.
    
    Fixes #828
    35405583