• Cherry Zhang's avatar
    runtime: ensure memmove write pointer atomically on ARM64 · ffbc0276
    Cherry Zhang authored
    If a pointer write is not atomic, if the GC is running
    concurrently, it may observe a partially updated pointer, which
    may point to unallocated or already dead memory. Most pointer
    writes, like the store instructions generated by the compiler,
    are already atomic. But we still need to be careful in places
    like memmove. In memmove, we don't know which bits are pointers
    (or too expensive to query), so we ensure that all aligned
    pointer-sized units are written atomically.
    
    Fixes #36101.
    
    Change-Id: I1b3ca24c6b1ac8a8aaf9ee470115e9a89ec1b00b
    Reviewed-on: https://go-review.googlesource.com/c/go/+/212626Reviewed-by: default avatarAustin Clements <austin@google.com>
    ffbc0276
memmove_arm64.s 3.5 KB