• Austin Clements's avatar
    runtime: fix stack use accounting · 7c7cd695
    Austin Clements authored
    ReadMemStats accounts for stacks slightly differently than the runtime
    does internally. Internally, only stacks allocated by newosproc0 are
    accounted in memstats.stacks_sys and other stacks are accounted in
    heap_sys. readmemstats_m shuffles the statistics so all stacks are
    accounted in StackSys rather than HeapSys.
    
    However, currently, readmemstats_m assumes StackSys will be zero when
    it does this shuffle. This was true until commit 6ad33be2. If it isn't
    (e.g., if something called newosproc0), StackSys+HeapSys will be
    different before and after this shuffle, and the Sys sum that was
    computed earlier will no longer agree with the sum of its components.
    
    Fix this by making the shuffle in readmemstats_m not assume that
    StackSys is zero.
    
    Fixes #10585.
    
    Change-Id: If13991c8de68bd7b85e1b613d3f12b4fd6fd5813
    Reviewed-on: https://go-review.googlesource.com/9366Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    7c7cd695
mstats.go 12.1 KB