)]}'
{
  "commit": "ec01c28e1e892b410bdd1581a2bd4e46cbd03eac",
  "tree": "49091b5b2893cfe5c40abd5593daad31343c789c",
  "parents": [
    "281ca64c8ac9b9ee6ec72f2b776016aa98e964ba"
  ],
  "author": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Mon Mar 02 16:23:45 2020 -0800"
  },
  "committer": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Thu Mar 05 22:47:52 2020 -0800"
  },
  "message": "darwin: Fix race condition that results in segmentation fault\n\nCommit 763668cc92 (\"darwin: fix occasional dead-lock on libusb_exit\")\nresolved the deadlock situation observed in #112, but unfortunately\nthere is a very rare race condition that can occur when the asynchronous\nevent thread exits the run loop before CFRunLoopWakeUp() is called. This\ncan occur when the shutdown source signal is processed as part of other\nevents in the run loop, in which case the thread was already \"awake\".\n\nPrior to this change I was able to consistently trigger a segmentation\nfault within 10,000 iterations of a libusb_init()/libusb_exit() loop.\nWith this change I reached over 4 million iterations without issue.\n\nCloses #701\n\nSigned-off-by: Chris Dickens \u003cchristopher.a.dickens@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4aaa6e44634c225e682728dcf213a4c42179960c",
      "old_mode": 33188,
      "old_path": "libusb/os/darwin_usb.c",
      "new_id": "956e7b025ba365e38ba22bb7f137b35b904f8517",
      "new_mode": 33188,
      "new_path": "libusb/os/darwin_usb.c"
    },
    {
      "type": "modify",
      "old_id": "b5f8e70603658d95bdff50b5a4c03471a5914a36",
      "old_mode": 33188,
      "old_path": "libusb/version_nano.h",
      "new_id": "a1366d4f9e2f31f36ff05fa49dd9dc8d59fbe764",
      "new_mode": 33188,
      "new_path": "libusb/version_nano.h"
    }
  ]
}
