)]}'
{
  "commit": "d16c47e0434ffac0d2b54288fab4804bdab1101c",
  "tree": "f839253a466a2277ffe3bc98b06e8d060747bcb4",
  "parents": [
    "80e614d0f3fe155eed3b28ba8189b0a7049d660d"
  ],
  "author": {
    "name": "Jingyun Liu",
    "email": "jingyun@google.com",
    "time": "Wed Oct 21 15:34:01 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 21 15:39:58 2026 -0700"
  },
  "message": "Fix duplicate absl::Hash seed in component builds via test_support.\n\nIn component builds, `//third_party/abseil-cpp:absl` already includes\nall compiled dependencies of `absl/hash:hash_testing` (e.g `absl/hash`\n), while `hash_testing` and `spy_hash_state` themselves are header-only.\n\nHowever, `//third_party/abseil-cpp:test_support` unconditionally added\n`//third_party/abseil-cpp/absl/hash:hash_testing` to `public_deps`.\nBecause `hash_testing` and its transitive dependency `absl/hash` are\n`source_set` targets, test executables depending on `:test_support`\n(such as `components_unittests`) statically linked a second copy of\n`hash.o` and `absl::hash_internal::MixingHashState::kSeed` directly\ninto the executable in addition to the copy exported by\n`libthird_party_abseil-cpp_absl.dylib`.\n\nBecause `MixingHashState::Seed()` uses the address of `kSeed` (`\u0026kSeed`)\nas its per-process hash seed, hash tables such as `google::protobuf::Map`\nand `absl::flat_hash_map` populated inside a shared library (e.g.\n`ParseFromString` in `libprotobuf`) hashed keys using the dylib\u0027s\n`kSeed`, while lookups inlined into the test executable (`.contains()`,\n`.find()`) hashed keys using the executable\u0027s duplicate `kSeed`, causing\ncross-DSO map lookups to fail in `components_unittests`.\n\nUpdate `test_support` in component builds to expose the `hash_testing`\nheaders on top of `:absl` and googletest instead of pulling in the\n`absl/hash:hash_testing` `source_set` graph a second time.\n\nDetailed Context, root cause and investigation: http://gpaste/6755399435830337\n\nChange-Id: I3c3e146ddef12758eeb122a4a18a85f53348afba\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8619338\nReviewed-by: Danil Chapovalov \u003cdanilchap@chromium.org\u003e\nCommit-Queue: Jingyun Liu \u003cjingyun@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#1724216}\nNOKEYCHECK\u003dTrue\nGitOrigin-RevId: c0edc85d9062c05aef03ead4f4d121f1e60f096c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3761b75f66a9ed4e110ff6dc3b1cb68349a71b55",
      "old_mode": 33188,
      "old_path": "BUILD.gn",
      "new_id": "307a5684145a3abeaaf8dab0ff33ef91decf1386",
      "new_mode": 33188,
      "new_path": "BUILD.gn"
    }
  ]
}
