)]}'
{
  "commit": "a22c11b9957cf3f0d66dd6d1d38172d5ac0ec54a",
  "tree": "5825807374a53bf2cd20283845da6476f3c722e5",
  "parents": [
    "8db71d4ee89a505c375b550eb8fb8cc33bbabc03"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Wed Oct 29 15:14:24 2014 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Wed Oct 29 15:14:24 2014 -0400"
  },
  "message": "runtime: fix line number in first stack frame in printed stack trace\n\nOriginally traceback was only used for printing the stack\nwhen an unexpected signal came in. In that case, the\ninitial PC is taken from the signal and should be used\nunaltered. For the callers, the PC is the return address,\nwhich might be on the line after the call; we subtract 1\nto get to the CALL instruction.\n\nTraceback is now used for a variety of things, and for\nalmost all of those the initial PC is a return address,\nwhether from getcallerpc, or gp-\u003esched.pc, or gp-\u003esyscallpc.\nIn those cases, we need to subtract 1 from this initial PC,\nbut the traceback code had a hard rule \"never subtract 1\nfrom the initial PC\", left over from the signal handling days.\n\nChange gentraceback to take a flag that specifies whether\nwe are tracing a trap.\n\nChange traceback to default to \"starting with a return PC\",\nwhich is the overwhelmingly common case.\n\nAdd tracebacktrap, like traceback but starting with a trap PC.\n\nUse tracebacktrap in signal handlers.\n\nFixes #7690.\n\nLGTM\u003diant, r\nR\u003dr, iant\nCC\u003dgolang-codereviews\nhttps://golang.org/cl/167810044\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "71da419f150ec5511fe74c5ded597b81feeb3a5c",
      "old_mode": 33188,
      "old_path": "src/runtime/heapdump.c",
      "new_id": "94a4bd2be5dac300bf4a00b67320a7286f500f50",
      "new_mode": 33188,
      "new_path": "src/runtime/heapdump.c"
    },
    {
      "type": "modify",
      "old_id": "1b41bf9a79419627c791092102922c05e737f57b",
      "old_mode": 33188,
      "old_path": "src/runtime/mgc0.c",
      "new_id": "7754bad89d437ea27f5881a6a7d6214419ebe846",
      "new_mode": 33188,
      "new_path": "src/runtime/mgc0.c"
    },
    {
      "type": "modify",
      "old_id": "803da56670bd9eb1215d92ef7d7894db1cd2656b",
      "old_mode": 33188,
      "old_path": "src/runtime/mprof.go",
      "new_id": "d64e3be6952dbf86c6fd3dad4912a811d7c945c5",
      "new_mode": 33188,
      "new_path": "src/runtime/mprof.go"
    },
    {
      "type": "modify",
      "old_id": "3490862244485d011608e67a07b6f8b223afccb3",
      "old_mode": 33188,
      "old_path": "src/runtime/os_plan9_386.c",
      "new_id": "42c6d161c7dfc2a6ef92869effe742a7a85b5ec2",
      "new_mode": 33188,
      "new_path": "src/runtime/os_plan9_386.c"
    },
    {
      "type": "modify",
      "old_id": "6b0f8ae3a217f3fd4b4137225cd1acac30501071",
      "old_mode": 33188,
      "old_path": "src/runtime/os_plan9_amd64.c",
      "new_id": "a9dc0eb966b67339567cdd4bb1f2fbea63a3a61d",
      "new_mode": 33188,
      "new_path": "src/runtime/os_plan9_amd64.c"
    },
    {
      "type": "modify",
      "old_id": "213582799b13604fc36a08cadfce9a9d603bbd89",
      "old_mode": 33188,
      "old_path": "src/runtime/os_windows_386.c",
      "new_id": "9962f0dc2e4dde5ee816a11b360fbe14a515f088",
      "new_mode": 33188,
      "new_path": "src/runtime/os_windows_386.c"
    },
    {
      "type": "modify",
      "old_id": "b96cf70d1ec0726ee4930e87e2043c722d0a4bf7",
      "old_mode": 33188,
      "old_path": "src/runtime/os_windows_amd64.c",
      "new_id": "e4617e4cefa8fc7761c29a6d0bab992dad18a9c9",
      "new_mode": 33188,
      "new_path": "src/runtime/os_windows_amd64.c"
    },
    {
      "type": "modify",
      "old_id": "52f7ef3a5bfbca96f63904fab25e35e4e3d62207",
      "old_mode": 33188,
      "old_path": "src/runtime/proc.c",
      "new_id": "b46f67065a528b92182b5ef29565250eb4fa3a8f",
      "new_mode": 33188,
      "new_path": "src/runtime/proc.c"
    },
    {
      "type": "modify",
      "old_id": "2a607400636ad72d80c5bfd95bba92e8ca2980f8",
      "old_mode": 33188,
      "old_path": "src/runtime/runtime.h",
      "new_id": "977c4547dfbacf55f2627968e9c4d3fd39c72016",
      "new_mode": 33188,
      "new_path": "src/runtime/runtime.h"
    },
    {
      "type": "modify",
      "old_id": "d55e3045288f673f2c1dc3115f3e878b7f17179d",
      "old_mode": 33188,
      "old_path": "src/runtime/signal_386.c",
      "new_id": "30a7488bd786f5dd2ba4b2144e9a805393bdb433",
      "new_mode": 33188,
      "new_path": "src/runtime/signal_386.c"
    },
    {
      "type": "modify",
      "old_id": "44e68cecfccf8e8717bc3c12ac998e36f2c8ce8e",
      "old_mode": 33188,
      "old_path": "src/runtime/signal_amd64x.c",
      "new_id": "feb4afcce3481a64e1a459d45a50c059d38ef000",
      "new_mode": 33188,
      "new_path": "src/runtime/signal_amd64x.c"
    },
    {
      "type": "modify",
      "old_id": "3571cf3ac6715a38782a9bbc0e549dfb84ab46cf",
      "old_mode": 33188,
      "old_path": "src/runtime/signal_arm.c",
      "new_id": "afad5e7d166820093ede00e35072f92b01e7f18c",
      "new_mode": 33188,
      "new_path": "src/runtime/signal_arm.c"
    },
    {
      "type": "modify",
      "old_id": "ed8f4f872799be664a90c501de68094a8af7b07d",
      "old_mode": 33188,
      "old_path": "src/runtime/stack.c",
      "new_id": "072bc242bc2a5d3cad6bd004a2d2011b17fd5f92",
      "new_mode": 33188,
      "new_path": "src/runtime/stack.c"
    },
    {
      "type": "modify",
      "old_id": "24dc3eea951d6831e94425ef57d48a59c5ac12f1",
      "old_mode": 33188,
      "old_path": "src/runtime/traceback.go",
      "new_id": "834435b400d3d0be0bff6f4f499cd7090bd63445",
      "new_mode": 33188,
      "new_path": "src/runtime/traceback.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ad9e8622ad656a283e392912a16770dad7b72fb",
      "new_mode": 33188,
      "new_path": "test/fixedbugs/issue7690.go"
    }
  ]
}
