)]}'
{
  "commit": "d574b59fc71e52ac7feead94348ee61ef8d16a1c",
  "tree": "dad308ced266c6ede5a57d2e3f8111d728455743",
  "parents": [
    "dc32b7f0fda20e6f3a4f893ca886681cb765739e"
  ],
  "author": {
    "name": "Patrick Mezard",
    "email": "patrick@mezard.eu",
    "time": "Sun May 10 15:35:52 2015 +0200"
  },
  "committer": {
    "name": "Alex Brainman",
    "email": "alex.brainman@gmail.com",
    "time": "Thu Jun 11 01:33:25 2015 +0000"
  },
  "message": "os: fix a race between Process.signal() and wait() on Windows\n\nProcess.handle was accessed without synchronization while wait() and\nsignal() could be called concurrently.\n\nA first solution was to add a Mutex in Process but it was probably too\ninvasive given Process.handle is only used on Windows.\n\nThis version uses atomic operations to read the handle value. There is\nstill a race between isDone() and the value of the handle, but it only\nleads to slightly incorrect error codes. The caller may get a:\n\n  errors.New(\"os: process already finished\")\n\ninstead of:\n\n  syscall.EINVAL\n\nwhich sounds harmless.\n\nFixes #9382\n\nChange-Id: Iefcc687a1166d5961c8f27154647b9b15a0f748a\nReviewed-on: https://go-review.googlesource.com/9904\nReviewed-by: Alex Brainman \u003calex.brainman@gmail.com\u003e\nRun-TryBot: Alex Brainman \u003calex.brainman@gmail.com\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5aea3098b542354d27630d1cc51b66d6efd5c2fe",
      "old_mode": 33188,
      "old_path": "src/os/exec.go",
      "new_id": "15e95b917223e603d305d10ec4c8d2863509c3ce",
      "new_mode": 33188,
      "new_path": "src/os/exec.go"
    },
    {
      "type": "modify",
      "old_id": "393393b2375a381aa39e44c129acf851e500bc68",
      "old_mode": 33188,
      "old_path": "src/os/exec_windows.go",
      "new_id": "3264271b2e95b6682c754dd51911d0a8d420db5c",
      "new_mode": 33188,
      "new_path": "src/os/exec_windows.go"
    }
  ]
}
