)]}'
{
  "commit": "ca1d2ead5d3fb2dccbc93f5c29a17da4bdf30ea3",
  "tree": "f4f82800be9f3dd26ecb5daaf6deb91843906306",
  "parents": [
    "587c3847da81aa7cfc3b3db2677c8586c94df13a"
  ],
  "author": {
    "name": "Michael Anthony Knyszek",
    "email": "mknyszek@google.com",
    "time": "Wed May 22 20:00:02 2024 +0000"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Wed May 22 22:31:00 2024 +0000"
  },
  "message": "runtime: skip tracing events that would cause reentrancy\n\nSome of the new experimental events added have a problem in that they\nmight be emitted during stack growth. This is, to my knowledge, the only\nrestriction on the tracer, because the tracer otherwise prevents\npreemption, avoids allocation, and avoids write barriers. However, the\nstack can grow from within the tracer. This leads to\ntracing-during-tracing which can result in lost buffers and broken event\nstreams. (There\u0027s a debug mode to get a nice error message, but it\u0027s\ndisabled by default.)\n\nThis change resolves the problem by skipping writing out these new\nevents. This results in the new events sometimes being broken (alloc\nwithout a free, free without an alloc) but for now that\u0027s OK. Before the\nfreeze begins we just want to fix broken tests; tools interpreting these\nevents will be totally in-house to begin with, and if they have to be a\nlittle bit smarter about missing information, that\u0027s OK. In the future\nwe\u0027ll have a more robust fix for this, but it appears that it\u0027s going to\nrequire making the tracer fully reentrant. (This is not too hard; either\nwe force flushing all buffers when going reentrant (which is actually\nsomewhat subtle with respect to event ordering) or we isolate down just\nthe actual event writing to be atomic with respect to stack growth. Both\nare just bigger changes on shared codepaths that are scary to land this\nlate in the release cycle.)\n\nFixes #67379.\n\nChange-Id: I46bb7e470e61c64ff54ac5aec5554b828c1ca4be\nReviewed-on: https://go-review.googlesource.com/c/go/+/587597\nReviewed-by: Carlos Amedee \u003ccarlos@golang.org\u003e\nAuto-Submit: Michael Knyszek \u003cmknyszek@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4e7e606db9ba6425a764952770c8539ad38bf6e6",
      "old_mode": 33188,
      "old_path": "src/runtime/mheap.go",
      "new_id": "35fd08af50c3c1bd93dc2b491249c7e6b048f462",
      "new_mode": 33188,
      "new_path": "src/runtime/mheap.go"
    },
    {
      "type": "modify",
      "old_id": "6d24814271a17f07456446388ae49fd0d91233c4",
      "old_mode": 33188,
      "old_path": "src/runtime/stack.go",
      "new_id": "cdf859a7ff1342f39015018bceeb7cc5c4118066",
      "new_mode": 33188,
      "new_path": "src/runtime/stack.go"
    },
    {
      "type": "modify",
      "old_id": "54979130663cbcd5f1e60020a378e8f500c738fd",
      "old_mode": 33188,
      "old_path": "src/runtime/traceruntime.go",
      "new_id": "195b3e1c37f984ea28c7ca237b6e4aed3cdde44e",
      "new_mode": 33188,
      "new_path": "src/runtime/traceruntime.go"
    }
  ]
}
