)]}'
{
  "commit": "1332450b85b349fd9e89ac7c65048d366e81e5c2",
  "tree": "8d1d94cacb6a0181f50c0e2034a2b1b56f9ba81a",
  "parents": [
    "8b32320eebdd892e7cd95fec623363f68930ca6e"
  ],
  "author": {
    "name": "Peter Weinberger",
    "email": "pjw@google.com",
    "time": "Thu Sep 10 16:12:08 2026 -0400"
  },
  "committer": {
    "name": "Peter Weinberger",
    "email": "pjw@google.com",
    "time": "Thu Oct 08 10:56:33 2026 -0700"
  },
  "message": "internal/gocommand: kill process group on cancel\n\nWhen a Go command was cancelled, invoke.go sent SIGINT\nand SIGKILL only to the top-level go process. Subprocesses spawned\nby the go command (such as cgo and C compilers during \u0027go list\u0027\nor \u0027go build\u0027) did not receive the signal and continued running\nas orphans in the background, consuming CPU cores.\n\nOn Unix, configure the command to run as the leader of its own process\ngroup, and send cancellation signals (SIGINT, SIGKILL)\nto the entire process group (using -pid) so that descendant processes are\nterminated promptly upon cancellation.\n\n(It might be possible to do this for Windows, in its own CL.)\n\nFor golang/go#81408.\n\nChange-Id: I4484ea520f20312ac9bba437ce613ffb4a10e398\nReviewed-on: https://go-review.googlesource.com/c/tools/+/830824\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "58721202de76a92ba148042b68280858a16c458e",
      "old_mode": 33188,
      "old_path": "internal/gocommand/invoke.go",
      "new_id": "45ccf270381361d88373cc593c02959050635db5",
      "new_mode": 33188,
      "new_path": "internal/gocommand/invoke.go"
    },
    {
      "type": "modify",
      "old_id": "469c648e4d80c016525a8fb8ec7d479cb7c59202",
      "old_mode": 33188,
      "old_path": "internal/gocommand/invoke_notunix.go",
      "new_id": "a156a8ffcb2ab643ef93f9b99c500117e54b788f",
      "new_mode": 33188,
      "new_path": "internal/gocommand/invoke_notunix.go"
    },
    {
      "type": "modify",
      "old_id": "169d37c8e9325157373b672e21e42b7d0ae740b9",
      "old_mode": 33188,
      "old_path": "internal/gocommand/invoke_unix.go",
      "new_id": "be60ebb09f80f19d42a193da8deb41bf06dd9d21",
      "new_mode": 33188,
      "new_path": "internal/gocommand/invoke_unix.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "624b81e323d20b698903d10de091627acfdb174a",
      "new_mode": 33188,
      "new_path": "internal/gocommand/invoke_unix_test.go"
    }
  ]
}
