)]}'
{
  "commit": "adbd1f48e6c76998fbabfef403fcce164a58f753",
  "tree": "e5a12ef9e317253d500c0601fc68913bd82430c2",
  "parents": [
    "b28cfbbb4d900d370cc4d7967ce8b0243e476f84"
  ],
  "author": {
    "name": "Jason Simmons",
    "email": "jason-simmons@users.noreply.github.com",
    "time": "Mon Feb 26 12:06:29 2024 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Feb 26 20:06:29 2024 +0000"
  },
  "message": "[Impeller] Fix a race that can abort the process if the Vulkan context is destroyed while pipeline creation tasks are pending (#50883)\n\nThe Vulkan pipeline library queues pipeline creation tasks to a ConcurrentTaskRunner.  If the ContextVK is destroyed before these tasks execute, then the ConcurrentMessageLoop destructor will delete the pending tasks.\r\n\r\nEach task lambda holds a reference to a promise that will be completed with the pipeline.  If the task was never run and its promise was never completed, then the promise destructor will complete it with an exception.  This will cause a std::abort because Flutter is built without exception support.\r\n\r\nThis PR wraps the promise in an object that completes it with a default value during destruction if the promise was never given a value.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a7c40d868df553088a2ae1d105f9cee5c79773f8",
      "old_mode": 33188,
      "old_path": "impeller/base/base_unittests.cc",
      "new_id": "db2c97852be49da71b85210fdf88d4906a08c408",
      "new_mode": 33188,
      "new_path": "impeller/base/base_unittests.cc"
    },
    {
      "type": "modify",
      "old_id": "30d45ae4d3f5ffd8c4a7d7b511221ef8f2784ea0",
      "old_mode": 33188,
      "old_path": "impeller/base/promise.h",
      "new_id": "9f7205eaab60b94d80b98ab259d20c16c5c1f1e1",
      "new_mode": 33188,
      "new_path": "impeller/base/promise.h"
    },
    {
      "type": "modify",
      "old_id": "600ef830450d5200e1d3ad3fe874e6fb8d1940b4",
      "old_mode": 33188,
      "old_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.cc",
      "new_id": "130cabd36ae98c0c14e1a4d1e07a0b097007566c",
      "new_mode": 33188,
      "new_path": "impeller/renderer/backend/vulkan/pipeline_library_vk.cc"
    }
  ]
}
