)]}'
{
  "commit": "0bd8c7d24b53d98b9a33e22179c7b89277348cd2",
  "tree": "73a1eeecfdfbc47706d49f32313f715a02de297c",
  "parents": [
    "c6cfd1b9c5445e45049bf27f827e92404c70ab44"
  ],
  "author": {
    "name": "Jordan Lewis",
    "email": "jordanthelewis@gmail.com",
    "time": "Sat Mar 26 00:42:25 2022 +0000"
  },
  "committer": {
    "name": "Dominik Honnef",
    "email": "dominik@honnef.co",
    "time": "Sun Apr 03 17:08:28 2022 +0000"
  },
  "message": "gocore: bugfix to Go 1.17 cores, Go 1.16 cores and Go 1.11+ cores\n\nThis CL fixes several bugs in `gocore`, the library that `viewcore` uses to\nparse a core dump, as well as adds general updates for the more recent Go\nversions.\n\nFirst, we fix _func types for Go 1.16. In 1.16, the types of a few fields in\n_func were changed. This commit makes the corresponding change to gocore. This\nis the commit the changed the field types: CL 248332. Additionally, we\nupdated the func parsing to deal with the new split pclntab.\n\nPreviously, the code that deserialized the heapArena.bitmap field to\ncheck whether addresses contained pointers or not was incorrect. It was\ntreating the entire bitmap as 1 bit per pointer.\n\nHowever, that is not what the bitmap represents. Each byte in the bitmap\nis actually split in half. The high bits contain the 4 scan bits. And\nthe low bits contain the 4 pointer bits.\n\nSee\nhttps://github.com/golang/go/blob/3b304ce7fe35b9d1e8cf0b0518ed2550c361a010/src/runtime/mbitmap.go#L17-L35\nfor a more detailed description.\n\nThis commit corrects the issue and allows gocore to correctly traverse\nthe object graph.\n\nFinally, for Go 1.17, we stop subtracting the heap unallocated space\nrepresented by curArena from the total size of the heap. This reflects the\nchange that was made in CL 270537.\n\nAlso, a few incidental fixes:\n- Stop thrashing the viewcore cache on the first command in interactive mode.\n- Synthesize types for 0-size arrays in structs\n\nChange-Id: Ia1636932d7c6c59bbd640f6b5b00b221369fed44\nGitHub-Last-Rev: c66ea5a6d246f1f5f089a49824a91d34ebab5279\nGitHub-Pull-Request: golang/debug#7\nReviewed-on: https://go-review.googlesource.com/c/debug/+/321736\nTrust: Cherry Mui \u003ccherryyz@google.com\u003e\nTrust: Daniel Martí \u003cmvdan@mvdan.cc\u003e\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\nRun-TryBot: Dmitri Shuralyov \u003cdmitshur@golang.org\u003e\nTryBot-Result: Gopher Robot \u003cgobot@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "26e278502e7d606aec0c9f99d2b4415ce3907d3c",
      "old_mode": 33188,
      "old_path": "cmd/viewcore/main.go",
      "new_id": "c5842eea0c60fc753429ea9b5c4ff1c7be44ee38",
      "new_mode": 33188,
      "new_path": "cmd/viewcore/main.go"
    },
    {
      "type": "modify",
      "old_id": "d185d341aa86d4106fa6b537728d9f3329623bd1",
      "old_mode": 33188,
      "old_path": "internal/gocore/dwarf.go",
      "new_id": "c5cc17383098d01f8d93aab029c2a60f5ba3a60c",
      "new_mode": 33188,
      "new_path": "internal/gocore/dwarf.go"
    },
    {
      "type": "modify",
      "old_id": "0b33ca6cff94e30469236f45ae15a968197a9b94",
      "old_mode": 33188,
      "old_path": "internal/gocore/gocore_test.go",
      "new_id": "d233296da870a53910d0de4e549f337a7ce2254a",
      "new_mode": 33188,
      "new_path": "internal/gocore/gocore_test.go"
    },
    {
      "type": "modify",
      "old_id": "2f5e6321d95d44d768f68057796a4b6321d7fb65",
      "old_mode": 33188,
      "old_path": "internal/gocore/module.go",
      "new_id": "aacbd0c1fb77dab62d1c563f147bdedbe3b40bc9",
      "new_mode": 33188,
      "new_path": "internal/gocore/module.go"
    },
    {
      "type": "modify",
      "old_id": "25d083be3b844fe3f0f92536b4b8af510bc5f446",
      "old_mode": 33188,
      "old_path": "internal/gocore/process.go",
      "new_id": "c46a731e2a2f3fa68eec761b3c63b2944b549ed5",
      "new_mode": 33188,
      "new_path": "internal/gocore/process.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "05fb11a252b512988d4d543165fed8e6ef120dab",
      "new_mode": 33188,
      "new_path": "internal/gocore/testdata/1.16.zip"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f96ee795b79268cee1cd63d93099024e55a61860",
      "new_mode": 33188,
      "new_path": "internal/gocore/testdata/1.17.zip"
    },
    {
      "type": "modify",
      "old_id": "4f564fcebf0168991d0876768b027bb3163c6fc1",
      "old_mode": 33188,
      "old_path": "internal/gocore/type.go",
      "new_id": "4d1b8a55aeb0dbc17f3e84d3ce5884e63f0e7c71",
      "new_mode": 33188,
      "new_path": "internal/gocore/type.go"
    }
  ]
}
