)]}'
{
  "commit": "2e756bef75e52b2e880917e5e0ff1f60ad5fcd4d",
  "tree": "2c49e69994129cebca122441cca76f541ca5db03",
  "parents": [
    "06bae69eec126693f42c9f5d5f6bde2dd51b89ff"
  ],
  "author": {
    "name": "Lokbondo Kung",
    "email": "lokokung@google.com",
    "time": "Thu Jan 29 16:55:16 2026 -0800"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jan 29 16:55:16 2026 -0800"
  },
  "message": "[dawn][native] Eagerly transition from Alive when destroying Device.\n\n- Wire fuzz test found that if we start an async pipeline call, then\n  immediately drop the wire server the following occurs:\n  - Wire server dropped, so drop device\n  - Dropping device results in Device::Destroy\n  - Device::Destroy calls AsyncTaskManager::WaitAllPendingTasks\n  - This resolves the async pipeline creation with a success\n  - The success in the native side results in calling the server\n    callback\n  - The server callback (created via ForwardToServerHelper::Callback)\n    sees that the server was already dropped so it just returns\n  - The pipeline that was \"successfully\" created and returned via\n    the callback is never acquired and hence leaked.\n- To fix this, we eagerly mark the device to be in destruction before\n  calling into AsyncTaskManager::WaitAllPendingTasks. This results\n  in the pipeline creation event seeing the device is lost in it\u0027s\n  Complete function, thereby cleaning up the pipeline so that the\n  wire server doesn\u0027t need to change.\n\nBug: 476162309\nChange-Id: I6d8485de9a131e6d529e5f9f0425ee14652012bc\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/287816\nAuto-Submit: Loko Kung \u003clokokung@google.com\u003e\nCommit-Queue: Kai Ninomiya \u003ckainino@chromium.org\u003e\nCommit-Queue: Loko Kung \u003clokokung@google.com\u003e\nReviewed-by: Kai Ninomiya \u003ckainino@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9977c6ff7a2551e441bcdc4f959745b0c0c55627",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Device.cpp",
      "new_id": "7f7df8048eda97ebf516073749535f22bc3a7575",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Device.cpp"
    }
  ]
}
