1. 09 Jan, 2020 1 commit
    • Cherry Zhang's avatar
      runtime: overwrite asyncPreempt PC when injecting sigpanic on Windows · 17e97322
      Cherry Zhang authored
      On Windows, it might be possible that SuspendThread suspends a
      thread right between when an exception happens and when the
      exception handler runs. (This is my guess. I don't know the
      implementation detail of Windows exceptions to be sure.) In this
      case, we may inject a call to asyncPreempt before the exception
      handler runs. The exception handler will inject a sigpanic call,
      which will make the stack trace looks like
      
      sigpanic
      asyncPreempt
      actual panicking function
      
      i.e. it appears asyncPreempt panicked.
      
      Instead, just overwrite the PC, without pushing another frame.
      
      Fixes #35773.
      
      Change-Id: Ief4e964dcb7f45670b5f93c4dcf285cc1c737514
      Reviewed-on: https://go-review.googlesource.com/c/go/+/213879
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      17e97322
  2. 08 Jan, 2020 4 commits
    • Bryan C. Mills's avatar
      cmd/go: adjust heuristics for skipping +incompatible versions · 817afe83
      Bryan C. Mills authored
      We know of at least one module (github.com/stripe/stripe-go) that has
      a run of +incompatible versions, followed by a run of versions with
      go.mod files, followed by another run of +incompatible versions.
      
      We want the heuristics for showing +incompatible versions to reflect
      the authors' current intent, and it seems clear that the current
      intent of the authors of that module is for users of the unversioned
      import path to still be on +incompatible versions.
      
      To respect that intent, we need to keep checking for +incompatible
      versions even after we have seen a lower major version with an
      explicit go.mod file.
      
      However, we still don't want to download every single version of the
      module to check it. A given major version should have a consistent,
      canonical import path, so the path (as inferred by the presence or
      absence of a go.mod file) should be the same for every release across
      that major version.
      
      To avoid unnecessary overhead — and to allow module authors to correct
      accidental changes to a major version's import path — we check only
      the most recent release of each major version. If a release
      accidentally changes the import path in either direction (by deleting
      or adding a go.mod file), it can be corrected by issuing a single
      subsequent release of that major version to restore the correct path.
      
      I manually verified that, with this change,
      github.com/stripe/stripe-go@latest reverts to v68.7.0+incompatible
      as it was in Go 1.13.
      The other regression tests for #34165 continue to pass.
      
      Updates #34165
      
      Change-Id: I5daff3cd2123f94c7c49519babf4eecd509f169e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/212317Reviewed-by: default avatarJay Conrod <jayconrod@google.com>
      817afe83
    • Keith Randall's avatar
      cmd/compile: give every really deep type a unique name · 2248fc63
      Keith Randall authored
      This avoids the security problem in #29312 where two very deep, but
      distinct, types are given the same name. They both make it to the
      linker which chooses one, and the use of the other is now type unsafe.
      
      Instead, give every very deep type its own name. This errs on the
      other side, in that very deep types that should be convertible to each
      other might now not be. But at least that's not a security hole.
      
      Update #29312.
      
      Change-Id: Iac0ebe73fdc50594fd6fbf7432eef65f9a053126
      Reviewed-on: https://go-review.googlesource.com/c/go/+/213517
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      2248fc63
    • Luka Zitnik's avatar
      net/http: document that ParseForm consumes Request.Body · 77c13021
      Luka Zitnik authored
      Fixes #35620
      
      Change-Id: I71bc56ec7a7507d14b4f013177b4b816bb1a2094
      Reviewed-on: https://go-review.googlesource.com/c/go/+/212458Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      77c13021
    • Joel Sing's avatar
      runtime: use FP offsets for pipe/pipe2 on freebsd/arm64 and linux/arm64 · 4b1b18d1
      Joel Sing authored
      This is more readable and less error-prone than using RSP offsets.
      
      Suggested during review of CL 212765.
      
      Change-Id: I070190abeeac8eae5dbd414407602619d9d57422
      Reviewed-on: https://go-review.googlesource.com/c/go/+/213577
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      4b1b18d1
  3. 07 Jan, 2020 13 commits
  4. 06 Jan, 2020 19 commits
  5. 04 Jan, 2020 3 commits