)]}'
{
  "commit": "9dc65d7dc9268d5150174ec55cc4753fe18f554c",
  "tree": "787626aca45338b37ce3eadd62f9781324b0edf6",
  "parents": [
    "e70bbc702f093ab2d5e305ddb33b8dca2baf8104"
  ],
  "author": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Sat Oct 03 16:44:22 2020 -0400"
  },
  "committer": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Mon Oct 05 17:03:02 2020 +0000"
  },
  "message": "runtime: correct signature of call16\n\nThe signature of call16 is currently missing the \"typ\" parameter. This\nCL fixes this. This wasn\u0027t caught by vet because call16 is defined by\nmacro expansion (see #17544), and we didn\u0027t notice the mismatch with\nthe other call* functions because call16 is defined only on 32-bit\narchitectures and lives alone in stubs32.go.\n\nUnfortunately, this means its GC signature is also wrong: the \"arg\"\nparameter is treated as a scalar rather than a pointer, so GC won\u0027t\ntrace it and stack copying won\u0027t adjust it. This turns out to matter\nin exactly one case right now: on 32-bit architectures (which are the\nonly architectures where call16 is defined), a stack-allocated defer\nof a function with a 16-byte or smaller argument frame including a\nnon-empty result area can corrupt memory if the deferred function\ngrows the stack and is invoked during a panic. Whew. All other current\nuses of reflectcall pass a heap-allocated \"arg\" frame (which happens\nto be reachable from other stack roots, so tracing isn\u0027t a problem).\n\nCuriously, in 2016, the signatures of all call* functions were wrong\nin exactly this way. CL 31654 fixed all of them in stubs.go, but\nmissed the one in stubs32.go.\n\nFixes #41795.\n\nChange-Id: I31e3c0df201f79ee5707eeb8dc4ff0d13fc10ada\nReviewed-on: https://go-review.googlesource.com/c/go/+/259338\nTrust: Austin Clements \u003caustin@google.com\u003e\nRun-TryBot: Austin Clements \u003caustin@google.com\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Cherry Zhang \u003ccherryyz@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a7f52f6b9e2c2ec694f96f7c9e838a382169e81c",
      "old_mode": 33188,
      "old_path": "src/runtime/stubs32.go",
      "new_id": "c4715fe989bf4ceba2341c0ff674f1bc82889307",
      "new_mode": 33188,
      "new_path": "src/runtime/stubs32.go"
    }
  ]
}
