• Austin Clements's avatar
    runtime: use correct SP when installing stack barriers · 7529314e
    Austin Clements authored
    Currently the stack barriers are installed at the next frame boundary
    after gp.sched.sp + 1024*2^n for n=0,1,2,... However, when a G is in a
    system call, we set gp.sched.sp to 0, which causes stack barriers to
    be installed at *every* frame. This easily overflows the slice we've
    reserved for storing the stack barrier information, and causes a
    "slice bounds out of range" panic in gcInstallStackBarrier.
    
    Fix this by using gp.syscallsp instead of gp.sched.sp if it's
    non-zero. This is the same logic that gentraceback uses to determine
    the current SP.
    
    Fixes #11049.
    
    Change-Id: Ie40eeee5bec59b7c1aa715a7c17aa63b1f1cf4e8
    Reviewed-on: https://go-review.googlesource.com/10755Reviewed-by: default avatarRuss Cox <rsc@golang.org>
    7529314e
mgcmark.go 28.9 KB