)]}'
{
  "commit": "ba8e9e14f45155d68c4e0c86157e956baf8845df",
  "tree": "09135d7fa4d355e34ce286072f7489414ff4d43e",
  "parents": [
    "77e9c269604dedb49d7cc003e44511bdf580317a"
  ],
  "author": {
    "name": "Michael Anthony Knyszek",
    "email": "mknyszek@google.com",
    "time": "Mon Jan 22 16:34:41 2024 +0000"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Mon Jan 22 22:50:43 2024 +0000"
  },
  "message": "[release-branch.go1.22] runtime: use the correct M ID for syscalling goroutines in traces\n\nEarlier in the development of the new tracer, m.id was used as a the\ncanonical ID for threads. Later, we switched to m.procid because it\nmatches the underlying OS resource. However, in that switch, we missed a\nspot.\n\nThe tracer catches and emits statuses for goroutines that have remained\nin either waiting or syscall across a whole generation, and emits a\nthread ID for the latter set. The ID being used here, however, was m.id\ninstead of m.procid, like the rest of the tracer.\n\nThis CL also adds a regression test. In order to make the regression\ntest actually catch the failure, we also have to make the parser a\nlittle less lenient about GoStatus events with GoSyscall: if this isn\u0027t\nthe first generation, then we should\u0027ve seen the goroutine bound to an\nM already when its status is getting emitted for its context. If we emit\nthe wrong ID, then we\u0027ll catch the issue when we emit the right ID when\nthe goroutine exits the syscall.\n\nFixes #65196.\n\nChange-Id: I78b64fbea65308de5e1291c478a082a732a8bf9f\nReviewed-on: https://go-review.googlesource.com/c/go/+/557456\nReviewed-by: Michael Pratt \u003cmpratt@google.com\u003e\nAuto-Submit: Michael Knyszek \u003cmknyszek@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n(cherry picked from commit c46966653f6144e20f8b9bccb96e7a7f1d32aeb9)\nReviewed-on: https://go-review.googlesource.com/c/go/+/557436\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "24da41a35e1951918c74f0ae4e130a49f3bc1314",
      "old_mode": 33188,
      "old_path": "src/internal/trace/v2/order.go",
      "new_id": "cedb29726ec339b2f13e379dc627e166b19b03a8",
      "new_mode": 33188,
      "new_path": "src/internal/trace/v2/order.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "912f5dd3bcae62a97532039bc8140356b62dfc3d",
      "new_mode": 33188,
      "new_path": "src/internal/trace/v2/testdata/testprog/wait-on-pipe.go"
    },
    {
      "type": "modify",
      "old_id": "3300c00fe80945df3e83ea207dbb1814567eaed0",
      "old_mode": 33188,
      "old_path": "src/internal/trace/v2/trace_test.go",
      "new_id": "65ae3d8362d8ee7486874fc7b06c0272e747589b",
      "new_mode": 33188,
      "new_path": "src/internal/trace/v2/trace_test.go"
    },
    {
      "type": "modify",
      "old_id": "5fd09ed1eabf375cbb40561b55433bfae3314641",
      "old_mode": 33188,
      "old_path": "src/runtime/trace2.go",
      "new_id": "00ba081b4f4d0829509ab9f111c17dd2d82b32f3",
      "new_mode": 33188,
      "new_path": "src/runtime/trace2.go"
    }
  ]
}
