)]}'
{
  "commit": "3444ec2eb2be58c285d2bf04f39e6e9ea5eda9a2",
  "tree": "66e71b60020526c9f93d9e3050aae0a290394733",
  "parents": [
    "5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9"
  ],
  "author": {
    "name": "William Baker",
    "email": "William.Baker@microsoft.com",
    "time": "Fri Oct 11 13:11:23 2019 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Oct 12 10:16:11 2019 +0900"
  },
  "message": "fsmonitor: don\u0027t fill bitmap with entries to be removed\n\nWhile doing some testing with fsmonitor enabled I found\nthat git commands would segfault after staging and\nunstaging an untracked file.  Looking at the crash it\nappeared that fsmonitor_ewah_callback was attempting to\nadjust bits beyond the bounds of the index cache.\n\nDigging into how this could happen it became clear that\nthe fsmonitor extension must have been written with\nmore bits than there were entries in the index.  The\nroot cause ended up being that fill_fsmonitor_bitmap was\npopulating fsmonitor_dirty with bits for all entries in\nthe index, even those that had been marked for removal.\n\nTo solve this problem fill_fsmonitor_bitmap has been\nupdated to skip entries with the the CE_REMOVE flag set.\nWith this change the bits written for the fsmonitor\nextension will be consistent with the index entries\nwritten by do_write_index.  Additionally, BUG checks\nhave been added to detect if the number of bits in\nfsmonitor_dirty should ever exceed the number of\nentries in the index again.\n\nAnother option that was considered was moving the call\nto fill_fsmonitor_bitmap closer to where the index is\nwritten (and where the fsmonitor extension itself is\nwritten).  However, that did not work as the\nfsmonitor_dirty bitmap must be filled before the index\nis split during writing.\n\nSigned-off-by: William Baker \u003cWilliam.Baker@microsoft.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "231e83a94db58e4efb2f4d7a1dbe90220bd2f317",
      "old_mode": 33188,
      "old_path": "fsmonitor.c",
      "new_id": "1f4aa1b150dbe948910705c9ff4e75ad0a6a12a1",
      "new_mode": 33188,
      "new_path": "fsmonitor.c"
    },
    {
      "type": "modify",
      "old_id": "81a375fa0ff9845cb755dd77df9921d2b71c764b",
      "old_mode": 33261,
      "old_path": "t/t7519-status-fsmonitor.sh",
      "new_id": "d8df99097237b970cb6643fd77bb32ef80d4ffc6",
      "new_mode": 33261,
      "new_path": "t/t7519-status-fsmonitor.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8f1f7ab164e17c8a735db06b2a6ca774a706cc6d",
      "new_mode": 33261,
      "new_path": "t/t7519/fsmonitor-env"
    }
  ]
}
