)]}'
{
  "commit": "17f9423e75db40a08369c7ea23449db1c26a4890",
  "tree": "5caabc328f3016ba8638bf1350ca14f429ec6232",
  "parents": [
    "4110271501f901f53d987fe3a0a0f832b883c8b4"
  ],
  "author": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Thu Apr 03 19:07:33 2014 -0400"
  },
  "committer": {
    "name": "Russ Cox",
    "email": "rsc@golang.org",
    "time": "Thu Apr 03 19:07:33 2014 -0400"
  },
  "message": "runtime: test malformed address fault and fix on OS X\n\nThe garbage collector poison pointers\n(0x6969696969696969 and 0x6868686868686868)\nare malformed addresses on amd64.\nThat is, they are not 48-bit addresses sign extended\nto 64 bits. This causes a different kind of hardware fault\nthan the usual \u0027unmapped page\u0027 when accessing such\nan address, and OS X 10.9.2 sends the resulting SIGSEGV\nincorrectly, making it look like it was user-generated\nrather than kernel-generated and does not include the\nfaulting address. This means that in GODEBUG\u003dgcdead\u003d1\nmode, if there is a bug and something tries to dereference\na poisoned pointer, the runtime delivers the SIGSEGV to\nos/signal and returns to the faulting code, which faults\nagain, causing the process to hang instead of crashing.\n\nFix by rewriting \"user-generated\" SIGSEGV on OS X to\nlook like a kernel-generated SIGSEGV with fault address\n0xb01dfacedebac1e.\n\nI chose that address because (1) when printed in hex\nduring a crash, it is obviously spelling out English text,\n(2) there are no current Google hits for that pointer,\nwhich will make its origin easy to find once this CL\nis indexed, and (3) it is not an altogether inaccurate\ndescription of the situation.\n\nAdd a test. Maybe other systems will break too.\n\nLGTM\u003dkhr\nR\u003dgolang-codereviews, khr\nCC\u003dgolang-codereviews, iant, ken\nhttps://golang.org/cl/83270049\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9aca68e1a123035a8c6dec936d4ddade9afb6016",
      "old_mode": 33188,
      "old_path": "src/pkg/runtime/runtime_test.go",
      "new_id": "67d39218d445f4578b484878ad90fb172e78a351",
      "new_mode": 33188,
      "new_path": "src/pkg/runtime/runtime_test.go"
    },
    {
      "type": "modify",
      "old_id": "309bad3ba689bdd7baebda21de8e57754502f65a",
      "old_mode": 33188,
      "old_path": "src/pkg/runtime/signal_amd64x.c",
      "new_id": "04026f32f660a5b222dcde0c001c58ffc9f2b68f",
      "new_mode": 33188,
      "new_path": "src/pkg/runtime/signal_amd64x.c"
    }
  ]
}
