)]}'
{
  "commit": "0bba4d2fe614a2b54aa2bdaaaf47ae1eafeb561c",
  "tree": "143a2895227dcd3ab8c2a35567725c3f5348c37e",
  "parents": [
    "823e5d8afaaf9fff0cc2ab04e7fc0a62b1023c3e"
  ],
  "author": {
    "name": "Cherry Mui",
    "email": "cherryyz@google.com",
    "time": "Wed Aug 24 18:33:21 2022 -0400"
  },
  "committer": {
    "name": "Heschi Kreinick",
    "email": "heschi@google.com",
    "time": "Wed Aug 31 16:31:38 2022 +0000"
  },
  "message": "[release-branch.go1.19] runtime: mark morestack_noctxt SPWRITE on LR architectures\n\nOn LR architectures, morestack (and morestack_noctxt) are called\nwith a special calling convention, where the caller doesn\u0027t save\nLR on stack but passes it as a register, which morestack will save\nto g.sched.lr. The stack unwinder currently doesn\u0027t understand it,\nand would fail to unwind from it. morestack already writes SP (as\nit switches stack), but morestack_noctxt (which tailcalls\nmorestack) doesn\u0027t. If a profiling signal lands right in\nmorestack_noctxt, the unwinder will try to unwind the stack and\ngo off, and possibly crash.\n\nMarking morestack_noctxt SPWRITE stops the unwinding.\n\nIdeally we could teach the unwinder about the special calling\nconvention, or change the calling convention to be less special\n(so the unwinder doesn\u0027t need to fetch a register from the signal\ncontext). This is a stop-gap solution, to stop the unwinder from\ncrashing.\n\nUpdates #54332.\nFixes #54675.\n\nChange-Id: I75295f2e27ddcf05f1ea0b541aedcb9000ae7576\nReviewed-on: https://go-review.googlesource.com/c/go/+/425396\nTryBot-Result: Gopher Robot \u003cgobot@golang.org\u003e\nRun-TryBot: Cherry Mui \u003ccherryyz@google.com\u003e\nReviewed-by: Michael Pratt \u003cmpratt@google.com\u003e\n(cherry picked from commit e4be2ac79f3cc7219ae1cf8334463d11cae24e01)\nReviewed-on: https://go-review.googlesource.com/c/go/+/425615\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b47184e36bc9801e1c2c2080b9a9ef629122304a",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_arm.s",
      "new_id": "591ef2a399fb76711a609b1920d1ae32354439bd",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_arm.s"
    },
    {
      "type": "modify",
      "old_id": "7836ba1d96c01588a4aac93c23930d5587c2149a",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_arm64.s",
      "new_id": "7eb5bcfd21502b0fb18b209b33d65edf0c265daa",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_arm64.s"
    },
    {
      "type": "modify",
      "old_id": "3597ebec57c74ffad714f5fdc751d55c94032531",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_mips64x.s",
      "new_id": "1abadb9c7df308857a84c30885c47c587f560df6",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_mips64x.s"
    },
    {
      "type": "modify",
      "old_id": "4a086b8eb302cf167f028351012b052c9ab9b4b8",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_mipsx.s",
      "new_id": "877c1bb97b7bcf8bec5dcc287f44ccfc050abf13",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_mipsx.s"
    },
    {
      "type": "modify",
      "old_id": "c6bcf82ec06f33c9b471e486ac42d135a285532c",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_ppc64x.s",
      "new_id": "6a162eff0af583e47186400cb093bd7f9e904a9e",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_ppc64x.s"
    },
    {
      "type": "modify",
      "old_id": "00caa9f18a15b480bc23dd21f2641523c8e93f43",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_riscv64.s",
      "new_id": "389851beb978738cc40c090eebb4387ab87617d9",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_riscv64.s"
    },
    {
      "type": "modify",
      "old_id": "9159a673721ff3aad7928c446ebfb136dee8c51c",
      "old_mode": 33188,
      "old_path": "src/runtime/asm_s390x.s",
      "new_id": "334e1aa909d3ef7a554cd479aef99cdf36853560",
      "new_mode": 33188,
      "new_path": "src/runtime/asm_s390x.s"
    }
  ]
}
