)]}'
{
  "commit": "35df626efa2ac803d9a578594914d26dc4f27ab6",
  "tree": "27c6a89e92869f640f9d8787f7dd1b6d9097dde5",
  "parents": [
    "f61577078011f8c1221fabe922843354c6aa7ce2"
  ],
  "author": {
    "name": "Takahiro",
    "email": "hogehoge@gachapin.jp",
    "time": "Mon Feb 27 15:14:13 2023 +0000"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Feb 27 15:14:13 2023 +0000"
  },
  "message": "Refcount check in Buffer map async in Wire\n\nIf buffer is released and the external refcount reaches 0 while\nbuffer map state is pending map in Wire, the map async callback\nis fired with destroyed-before-callback status from the buffer\ndestructor.\n\nIt is possible to call another MapAsync in the callback. At that\ntime the pointer is still valid because the internal refcount is\nnot 0 yet.\n\nThe behavior of MapAsync should be undefined if external refcount\nis 0. This commit adds an assert to check whether external\nrefcount is 0 in Buffer::MapAsync() in Wire. Ending up with\nassertion error may be reasonable.\n\nThis commit also adds protected GetRefcount() method to\nObjectBase to allow derived classes to check the refcount.\n\nbug: dawn:1624\nChange-Id: I95411a7be2093ba7bb2bb45b466f17f1ebac0ca9\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/119961\nKokoro: Kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\nCommit-Queue: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd37ade4e381b4a117794a8bd09da280dc4341d1",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/wire/WireBufferMappingTests.cpp",
      "new_id": "e4bf75dc69c933a2f2b1f2cf8eb2205878932f91",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/wire/WireBufferMappingTests.cpp"
    },
    {
      "type": "modify",
      "old_id": "b9093e4a91d30ddc7da538f9d78aa6ab4a877e42",
      "old_mode": 33188,
      "old_path": "src/dawn/wire/client/Buffer.cpp",
      "new_id": "32e9ef0b1fd28fcd7e67708f80125c0635cd6297",
      "new_mode": 33188,
      "new_path": "src/dawn/wire/client/Buffer.cpp"
    },
    {
      "type": "modify",
      "old_id": "cf5f8ee7a2655bbc4017777389432ed1671747bd",
      "old_mode": 33188,
      "old_path": "src/dawn/wire/client/ObjectBase.h",
      "new_id": "feb00869f1cf77667a1cde993c49a91d740824cc",
      "new_mode": 33188,
      "new_path": "src/dawn/wire/client/ObjectBase.h"
    }
  ]
}
