)]}'
{
  "commit": "cb59df7acfef63f1e124d9124c19c0d48ceed345",
  "tree": "40d4892cf743924cc2c9fac3c5c87a163a6309c9",
  "parents": [
    "a864586f3cc58addc49657e7a890fe6807aa5750"
  ],
  "author": {
    "name": "Ryan Macnak",
    "email": "rmacnak@google.com",
    "time": "Wed Feb 19 09:40:34 2025 -0800"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Feb 19 09:40:34 2025 -0800"
  },
  "message": "[vm, ffi] Better handle errors that are not unhandled exceptions during FFI callbacks.\n\nBefore this change, an error reaching an FFI callback would attempt to execute the normal invocation stub from the beginning in the FFI callback\u0027s frame, which quickly crashes. After this change, the runtime recognizes this marker use of the invocation stub and returns to the FFI callback function instead.\n\nTEST\u003dffi/unwind\nBug: https://github.com/dart-lang/sdk/issues/39487\nChange-Id: I477cfcfc236e6cf518ebfe52860ba49e466ebf8b\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/409562\nReviewed-by: Daco Harkes \u003cdacoharkes@google.com\u003e\nCommit-Queue: Ryan Macnak \u003crmacnak@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba0fd4b091414e9beb4615e159e1fa0b93214cc4",
      "old_mode": 33188,
      "old_path": "runtime/bin/ffi_test/ffi_test_functions.cc",
      "new_id": "93d3040e4b2f673c4bd64170a8d8495012fdd864",
      "new_mode": 33188,
      "new_path": "runtime/bin/ffi_test/ffi_test_functions.cc"
    },
    {
      "type": "modify",
      "old_id": "7722169dad61c4846631f27db4e53e0c953d1549",
      "old_mode": 33188,
      "old_path": "runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc",
      "new_id": "76d4454b5221683258c72239f91223f09bb9b84e",
      "new_mode": 33188,
      "new_path": "runtime/bin/ffi_test/ffi_test_functions_vmspecific.cc"
    },
    {
      "type": "modify",
      "old_id": "5f07a49ac72b20d6fe621fcaadbbe8f0335aedb3",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/stub_code_compiler_arm.cc",
      "new_id": "4d83975c794543ef716f8777e69c17070adf4375",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/stub_code_compiler_arm.cc"
    },
    {
      "type": "modify",
      "old_id": "e333d6da84a615f443f45a2ac658106f814657db",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/stub_code_compiler_arm64.cc",
      "new_id": "713b49b1fb7ef476e4b9bd82c276847515da6936",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/stub_code_compiler_arm64.cc"
    },
    {
      "type": "modify",
      "old_id": "405389d69995590da2006ea55549c877f0575b54",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/stub_code_compiler_ia32.cc",
      "new_id": "4f92391d01a811cc5a07faca7602af8a10999954",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/stub_code_compiler_ia32.cc"
    },
    {
      "type": "modify",
      "old_id": "e540b85b4acf8d70199a187c8292a5a84318c47e",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/stub_code_compiler_riscv.cc",
      "new_id": "dbd557df457dbde33457ac7de821e104f7a6ac2d",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/stub_code_compiler_riscv.cc"
    },
    {
      "type": "modify",
      "old_id": "cbcb0665e7f3e1268a869d7079843884d4c3f9bb",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/stub_code_compiler_x64.cc",
      "new_id": "b397e9551976f464e581e4c242484c49c20cd283",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/stub_code_compiler_x64.cc"
    },
    {
      "type": "modify",
      "old_id": "16d774032111e6b709fa0bbe024dc0736b6b368c",
      "old_mode": 33188,
      "old_path": "runtime/vm/exceptions.cc",
      "new_id": "41533d7b539e1eb5f657cfbcbe35c43eeb4e7e93",
      "new_mode": 33188,
      "new_path": "runtime/vm/exceptions.cc"
    },
    {
      "type": "modify",
      "old_id": "b4d7ed55310164511d343faa126bef00a39463eb",
      "old_mode": 33188,
      "old_path": "runtime/vm/object.cc",
      "new_id": "a68a91702c40d9cf245f955b02b8a4e33aa34bbc",
      "new_mode": 33188,
      "new_path": "runtime/vm/object.cc"
    },
    {
      "type": "modify",
      "old_id": "ff92974ffe565643786ef66a538cc41994b41e8b",
      "old_mode": 33188,
      "old_path": "runtime/vm/object.h",
      "new_id": "0fb0044eca139a86f34c6f9c4edf6d79dc2d13b0",
      "new_mode": 33188,
      "new_path": "runtime/vm/object.h"
    },
    {
      "type": "modify",
      "old_id": "7c14e756b2e4572eda13e08b56eb25281b5a4c48",
      "old_mode": 33188,
      "old_path": "runtime/vm/stub_code_list.h",
      "new_id": "b8dc64766f0bd6788201bcbacfa51c27f19bacb8",
      "new_mode": 33188,
      "new_path": "runtime/vm/stub_code_list.h"
    },
    {
      "type": "modify",
      "old_id": "ee99e7d4b96a491acc6b9d63f5e8265161ca09c0",
      "old_mode": 33188,
      "old_path": "runtime/vm/thread.cc",
      "new_id": "5b37119122e217e0e9b5a48a30656d75f55372f8",
      "new_mode": 33188,
      "new_path": "runtime/vm/thread.cc"
    },
    {
      "type": "modify",
      "old_id": "45e86fff9093ad7688b6b4c216abaa138aed9877",
      "old_mode": 33188,
      "old_path": "runtime/vm/thread.h",
      "new_id": "93079bb773dc18bd4e80a638d006f18e4c0b8503",
      "new_mode": 33188,
      "new_path": "runtime/vm/thread.h"
    },
    {
      "type": "modify",
      "old_id": "e8813a19e6b985b3aebf8a8ce5a11aa9ae7660c1",
      "old_mode": 33188,
      "old_path": "tests/ffi/callback_unwind_error_test.dart",
      "new_id": "98163a40633814f952ad08599a5adec86c90b077",
      "new_mode": 33188,
      "new_path": "tests/ffi/callback_unwind_error_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c67d0bce08f2fe136cf0aefcae59185ee2f4b432",
      "new_mode": 33188,
      "new_path": "tests/ffi/vmspecific_callback_unwind_error_through_handle_test.dart"
    }
  ]
}
