)]}'
{
  "commit": "db150dc1298c140fb199b12c859ec3a3d5a84e2b",
  "tree": "43e91dce4c0798697dbe8f720ab5a67177ed994a",
  "parents": [
    "9c87a27ddd24250c13290eecd3ad0bd64688693f"
  ],
  "author": {
    "name": "Christopher Ferris",
    "email": "cferris@google.com",
    "time": "Tue Jul 29 17:32:08 2025 -0700"
  },
  "committer": {
    "name": "Christopher Ferris",
    "email": "cferris@google.com",
    "time": "Thu Aug 28 09:35:02 2025 -0700"
  },
  "message": "Enable checking global elf cache for unwinding.\n\nThe ART code can do unwinds while in signal handlers. Normally\nthis isn\u0027t a problem, but if something like fdtrack is also doing\nunwinds, there is a chance that a fdtrack unwind will be interrupted\nwhile doing an ART unwind. If this happens where both are using the\nglobal elf cache, this can mean a deadlock because the fdtrack\ncode owns an elf lock that the ART code is waiting on in the\nsignal handler since they are both sharing elf objects through the\nglobal cache.\n\nIn order to fix this deadlock condition, all usage of AndroidUnwinder\nobjects will now default to not even checking if the global elf\ncache is enabled. For ART, this change will allow only the ART\nunwinders to check the global elf cache if it gets enabled. This\nway only ART will use the global elf cache.\n\nThe global elf cache is enabled by calling:\n\n  unwindstack::Elf::SetCachingEnabled(true);\n\nAnd is enabled by the ART UnwindHelper struct.\n\nBug: 434879811\n\nFLAG: EXEMPT update\n\nTest: treehugger\nChange-Id: I1a34b25daf72514276e9d1a9a8e32a89bb5611cf\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b4204b168a501182f0c7893294d8b986b5502e03",
      "old_mode": 33188,
      "old_path": "runtime/native_stack_dump.cc",
      "new_id": "6d3cc73a1710475e0e67c7aa1ba7a046cc3939cd",
      "new_mode": 33188,
      "new_path": "runtime/native_stack_dump.cc"
    },
    {
      "type": "modify",
      "old_id": "ea6c5fe33c4d490a4cd33ea27bbf38e324d7bada",
      "old_mode": 33188,
      "old_path": "runtime/thread.cc",
      "new_id": "d7390c0546bb163caa2ef4ecd408d4e8eda461c2",
      "new_mode": 33188,
      "new_path": "runtime/thread.cc"
    },
    {
      "type": "modify",
      "old_id": "ae8043b129849552caa4730c227581b3c5211826",
      "old_mode": 33188,
      "old_path": "runtime/thread_list.cc",
      "new_id": "d2dc0a90750c0ffe6d518d625a2408f6e89cf144",
      "new_mode": 33188,
      "new_path": "runtime/thread_list.cc"
    }
  ]
}
