)]}'
{
  "commit": "7dde6edda2bc0091f54a2d07ff80d124090fa964",
  "tree": "c49e7cd2677c3acb28f9ea59df3503db27bda62d",
  "parents": [
    "dd161502900d8d28aca56c17eab9045770917a91"
  ],
  "author": {
    "name": "Ioannis Ilkos",
    "email": "ilkos@google.com",
    "time": "Sun Nov 13 20:14:10 2022 +0000"
  },
  "committer": {
    "name": "Treehugger Robot",
    "email": "treehugger-gerrit@google.com",
    "time": "Thu Dec 01 23:32:14 2022 +0000"
  },
  "message": "Grab perfetto heap dump on OOME\n\nIn order to make OutOfMemoryErrors actionable, enable collecting heap\ndumps at the time of the error when there is a present tracing session.\n\nFor now userdebug-only\n\nThis change introduces a new hook which is used by the existing\nperfetto plugin to collect the data.\n\nUsage: Setup a perfetto tracing session using data source\nandroid.java_hprof.oom, with a START_TRACING trigger activated by\n\"com.android.telemetry.art-outofmemory\"\n\nImportant points:\n- Unlike the current impl, we need to block the execution while we\n  collect the data. This is because propagating the OOME will\n  result in the process exiting (and cleanup will eliminate the entire\n  cgroup, including the heap dump children)\n- Processes do not know whether a START_TRACING session exists but\n  nevertheless need to wait for the producer start signal (in case one\n  exists). We wait up to 500ms which will delay all OOMing processes.\n\nFor more details see go/art-oom-heap-dump\n\nTest: manual\n      system_server OOME (collected heap dump, verified execution\n      resumes without a tracing session)\nBug: 211178923\nChange-Id: I90e260fbc6f113e77d00f0c958551fb561babb4e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7db4be4131def9060a20f3b2628084e3f6a80d32",
      "old_mode": 33188,
      "old_path": "perfetto_hprof/Android.bp",
      "new_id": "f5ae042d34961ca4ff9a7e9b3dfa076704678ad2",
      "new_mode": 33188,
      "new_path": "perfetto_hprof/Android.bp"
    },
    {
      "type": "modify",
      "old_id": "669fb0cac854b5e9bf83f40adfbff403590e0da1",
      "old_mode": 33188,
      "old_path": "perfetto_hprof/perfetto_hprof.cc",
      "new_id": "792cc993a7f9d4fd3caafa6354d6361cbe9575b5",
      "new_mode": 33188,
      "new_path": "perfetto_hprof/perfetto_hprof.cc"
    },
    {
      "type": "modify",
      "old_id": "76a49ba651c7206df1853fabd6352847389e0acf",
      "old_mode": 33188,
      "old_path": "runtime/gc/heap.cc",
      "new_id": "55af72097e3c751038b5a9d01815296bf0aebf70",
      "new_mode": 33188,
      "new_path": "runtime/gc/heap.cc"
    },
    {
      "type": "modify",
      "old_id": "66a6d32ab1798b246f303ee900aa28a5fd3688f3",
      "old_mode": 33188,
      "old_path": "runtime/runtime.cc",
      "new_id": "e0c2ea900064d758a5e40b1f9dc5e77503d2c832",
      "new_mode": 33188,
      "new_path": "runtime/runtime.cc"
    },
    {
      "type": "modify",
      "old_id": "0cebdab5dc492bf589195773106dbffb3b3496d0",
      "old_mode": 33188,
      "old_path": "runtime/runtime.h",
      "new_id": "89f4b82be9178e7bdac9853dabde90e775abfe91",
      "new_mode": 33188,
      "new_path": "runtime/runtime.h"
    }
  ]
}
