)]}'
{
  "commit": "49cf57281b74ccb64587ccc0626fc55a01227a15",
  "tree": "3b57b04f25cdaf958add7c26d96a0a3e38ca74ab",
  "parents": [
    "f9ab4654e370ceedb745523b607a628e297cb6ab"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Fri Nov 02 15:43:24 2012 +0100"
  },
  "committer": {
    "name": "Anthony Liguori",
    "email": "aliguori@us.ibm.com",
    "time": "Fri Nov 02 13:07:55 2012 -0500"
  },
  "message": "vl: delay thread initialization after daemonization\n\nCommit ac4119c (chardev: Use timer instead of bottom-half to postpone\nopen event, 2012-10-12) moved the alarm timer initialization to an earlier\npoint but failed to consider that it depends on qemu_init_main_loop.\n\nLater, commit 1c53786 (vl: init main loop earlier, 2012-10-30) fixed\nthis, but left -daemonize in two different ways.  First, timers need to\nbe reinitialized after forking.  Second, the global mutex was being held\nby the parent, and thus dropped after forking.\n\nThe first is now fixed using pthread_atfork.  For the second part,\nmake sure that the global mutex is not taken before daemonization,\nand similarly delay qemu_thread_self.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "234a3130c2132ad1c13322949549e14fffeb9ded",
      "old_mode": 33188,
      "old_path": "main-loop.c",
      "new_id": "c87624e621680cff61af0f5b8450938495fe623d",
      "new_mode": 33188,
      "new_path": "main-loop.c"
    },
    {
      "type": "modify",
      "old_id": "e2d5276988e04c3ec9b53ab201ef87c221cf7a3f",
      "old_mode": 33188,
      "old_path": "vl.c",
      "new_id": "0f5b07bbde67f29097367857dd3c22bda47134fa",
      "new_mode": 33188,
      "new_path": "vl.c"
    }
  ]
}
