1. 28 Jun, 2019 2 commits
    • Russ Cox's avatar
      runtime: fix pprof cpu profile corruption on arm/mips/mipsle · 91c385b3
      Russ Cox authored
      CL 42652 changed the profile handler for mips/mipsle to
      avoid recording a profile when in atomic functions, for fear
      of interrupting the 32-bit simulation of a 64-bit atomic with
      a lock. The profile logger itself uses 64-bit atomics and might
      deadlock (#20146).
      
      The change was to accumulate a count of dropped profile events
      and then send the count when the next ordinary event was sent:
      
      	if prof.hz != 0 {
      	+	if (GOARCH == "mips" || GOARCH == "mipsle") && lostAtomic64Count > 0 {
      	+		cpuprof.addLostAtomic64(lostAtomic64Count)
      	+		lostAtomic64Count = 0
      	+	}
       		cpuprof.add(gp, stk[:n])
       	}
      
      CL 117057 extended this behavior to include GOARCH == "arm".
      
      Unfortunately, the inserted cpuprof.addLostAtomic64 differs from
      the original cpuprof.add in that it neglects to acquire the lock
      protecting the profile buffer.
      
      This has caused a steady stream of flakes on the arm builders
      for the past 12 months, ever since CL 117057 landed.
      
      This CL moves the lostAtomic count into the profile buffer and
      then lets the existing addExtra calls take care of it, instead of
      duplicating the locking logic.
      
      Fixes #24991.
      
      Change-Id: Ia386c40034fcf46b31f080ce18f2420df4bb8004
      Reviewed-on: https://go-review.googlesource.com/c/go/+/184164
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      91c385b3
    • Dmitri Shuralyov's avatar
      cmd/doc: provide working directory to build.Import calls · 3b040b7e
      Dmitri Shuralyov authored
      The current cmd/doc implementation uses go/build.Import in a few
      places to check whether a package is findable and importable.
      go/build has limited support for finding packages in modules,
      but to do so, build.Import requires knowing the source directory
      to use when performing the lookup (so it can find the go.mod file).
      Otherwise, it only looks inside the GOPATH workspace.
      
      Start passing the current working directory to build.Import calls,
      so that it can correctly look for packages in modules when in cmd/doc
      is executed in module mode.
      
      Before this change, cmd/doc in module mode could mistakenly find and
      use a package in the GOPATH workspace, instead of the current module.
      
      Since the result of os.Getwd is needed in even more places, assign it
      to a local variable in parseArgs now.
      
      Fixes #28992
      Updates #26504
      
      Change-Id: I7571618e18420d2d3b3890cc69ade2d97b1962bf
      Reviewed-on: https://go-review.googlesource.com/c/go/+/183991
      Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      3b040b7e
  2. 27 Jun, 2019 7 commits
  3. 26 Jun, 2019 17 commits
  4. 25 Jun, 2019 14 commits