)]}'
{
  "commit": "49921f2c05cff6d4526b5b30f7b8e2d8bbabc069",
  "tree": "8abf1bb649ed595181f15c76225cfb0374e1f3e5",
  "parents": [
    "0027ddf990c657d3db8c1179cc2cad2dfe19f79f"
  ],
  "author": {
    "name": "songjinshi",
    "email": "songjinshi@xiaomi.com",
    "time": "Thu Sep 08 15:24:30 2016 +0800"
  },
  "committer": {
    "name": "金时 宋",
    "email": "songjinshi@xiaomi.com",
    "time": "Tue Sep 20 01:31:19 2016 +0000"
  },
  "message": "[AssetManager]:Fix thread race caused double free issue.\n\nThe SharedZip\u0027s Asset is not thread-safety,the getResourceTableAsset()\nand setResourceTableAsset(Asset* asset) function of the SharedZip is\nnot sync with a same lock.\n\nConsider the following sequence of events:\nThread A calls setResourceTableAsset(Asset* asset),it will set\nmResourceTableAsset \u003d asset; then to calls getBuffer() of the asset.\nThread B calls getResourceTableAsset(),which return mResourceTableAsset,\nthen to calls getBuffer() of the mResourceTableAsset,the asset and\nmResourceTableAsset is same one object.\nThread A to delete mZipInflater in getBuffer().\nThread B to delete mZipInflater in getBuffer().\n\nIt will cause crash becuase double delete mZipInflater in getBuffer().\n\nhttps://code.google.com/p/android/issues/detail?id\u003d211941\n\nChange-Id: I5a7d67fdf64c4aa03f505b37a2fa840f4443d158\nSigned-off-by: songjinshi \u003csongjinshi@xiaomi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f50cff4387d23c22961260e7aaf24f8532282576",
      "old_mode": 33188,
      "old_path": "libs/androidfw/AssetManager.cpp",
      "new_id": "8ea25d60cc89ed70c164fb9505c4a051bd88fd8e",
      "new_mode": 33188,
      "new_path": "libs/androidfw/AssetManager.cpp"
    }
  ]
}
