)]}'
{
  "commit": "e19d702b8e330cef87e0983733c427b5f7842144",
  "tree": "f657d4a39b7e45d0603b30762f4496f947ec043e",
  "parents": [
    "a60ff6c5b2ca76181b387d8c10aee22a2cbcf840"
  ],
  "author": {
    "name": "Pavel Chupin",
    "email": "pavel.v.chupin@intel.com",
    "time": "Mon Feb 20 10:49:13 2012 +0400"
  },
  "committer": {
    "name": "Bruce Beare",
    "email": "bruce.j.beare@intel.com",
    "time": "Tue Feb 21 14:57:26 2012 -0800"
  },
  "message": "Redesign dlopen() locks to be recursive per thread.\n\nThat is to fix the bug:\ndlxxx functions can\u0027t be called recursively.\nFor example, if we use dlopen() to use open one library whose constructor\nalso calls dlopen() in order to open another library, then the thread is\ndead-blocked.\n\nBy changing the dl_lock from a non-recursive lock to a recursive lock, we can\nprevent the thread from dead-blocked by recursive dlxxx calls in the same\nthread context.\n\nChange-Id: I1018b41c82f4641cc009c0a2eda31f5a47a534f9\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5964bd16ec8db8894d885ddefb8ae7920f4b3956",
      "old_mode": 33188,
      "old_path": "linker/dlfcn.c",
      "new_id": "194a4aeb2b14f5d68df5037a32b2369aa8396e86",
      "new_mode": 33188,
      "new_path": "linker/dlfcn.c"
    }
  ]
}
