• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1syntax = "proto3";
2
3option java_package = "com.android.server.os";
4option java_outer_classname = "TombstoneProtos";
5
6// NOTE TO OEMS:
7// If you add custom fields to this proto, do not use numbers in the reserved range.
8
9message Tombstone {
10  Architecture arch = 1;
11  string build_fingerprint = 2;
12  string revision = 3;
13  string timestamp = 4;
14
15  uint32 pid = 5;
16  uint32 tid = 6;
17  uint32 uid = 7;
18  string selinux_label = 8;
19
20  repeated string command_line = 9;
21
22  // Process uptime in seconds.
23  uint32 process_uptime = 20;
24
25  Signal signal_info = 10;
26  string abort_message = 14;
27  repeated Cause causes = 15;
28
29  map<uint32, Thread> threads = 16;
30  repeated MemoryMapping memory_mappings = 17;
31  repeated LogBuffer log_buffers = 18;
32  repeated FD open_fds = 19;
33
34  reserved 21 to 999;
35}
36
37enum Architecture {
38  ARM32 = 0;
39  ARM64 = 1;
40  X86 = 2;
41  X86_64 = 3;
42
43  reserved 4 to 999;
44}
45
46message Signal {
47  int32 number = 1;
48  string name = 2;
49
50  int32 code = 3;
51  string code_name = 4;
52
53  bool has_sender = 5;
54  int32 sender_uid = 6;
55  int32 sender_pid = 7;
56
57  bool has_fault_address = 8;
58  uint64 fault_address = 9;
59  // Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
60  // only include metadata, and not the contents.
61  MemoryDump fault_adjacent_metadata = 10;
62
63  reserved 11 to 999;
64}
65
66message HeapObject {
67  uint64 address = 1;
68  uint64 size = 2;
69
70  uint64 allocation_tid = 3;
71  repeated BacktraceFrame allocation_backtrace = 4;
72
73  uint64 deallocation_tid = 5;
74  repeated BacktraceFrame deallocation_backtrace = 6;
75}
76
77message MemoryError {
78  enum Tool {
79    GWP_ASAN = 0;
80    SCUDO = 1;
81
82    reserved 2 to 999;
83  }
84  Tool tool = 1;
85
86  enum Type {
87    UNKNOWN = 0;
88    USE_AFTER_FREE = 1;
89    DOUBLE_FREE = 2;
90    INVALID_FREE = 3;
91    BUFFER_OVERFLOW = 4;
92    BUFFER_UNDERFLOW = 5;
93
94    reserved 6 to 999;
95  }
96  Type type = 2;
97
98  oneof location {
99    HeapObject heap = 3;
100  }
101
102  reserved 4 to 999;
103}
104
105message Cause {
106  string human_readable = 1;
107  oneof details {
108    MemoryError memory_error = 2;
109  }
110
111  reserved 3 to 999;
112}
113
114message Register {
115  string name = 1;
116  uint64 u64 = 2;
117
118  reserved 3 to 999;
119}
120
121message Thread {
122  int32 id = 1;
123  string name = 2;
124  repeated Register registers = 3;
125  repeated string backtrace_note = 7;
126  repeated string unreadable_elf_files = 9;
127  repeated BacktraceFrame current_backtrace = 4;
128  repeated MemoryDump memory_dump = 5;
129  int64 tagged_addr_ctrl = 6;
130  int64 pac_enabled_keys = 8;
131
132  reserved 10 to 999;
133}
134
135message BacktraceFrame {
136  uint64 rel_pc = 1;
137  uint64 pc = 2;
138  uint64 sp = 3;
139
140  string function_name = 4;
141  uint64 function_offset = 5;
142
143  string file_name = 6;
144  uint64 file_map_offset = 7;
145  string build_id = 8;
146
147  reserved 9 to 999;
148}
149
150message ArmMTEMetadata {
151  // One memory tag per granule (e.g. every 16 bytes) of regular memory.
152  bytes memory_tags = 1;
153  reserved 2 to 999;
154}
155
156message MemoryDump {
157  string register_name = 1;
158  string mapping_name = 2;
159  uint64 begin_address = 3;
160  bytes memory = 4;
161  oneof metadata {
162    ArmMTEMetadata arm_mte_metadata = 6;
163  }
164
165  reserved 5, 7 to 999;
166}
167
168message MemoryMapping {
169  uint64 begin_address = 1;
170  uint64 end_address = 2;
171  uint64 offset = 3;
172
173  bool read = 4;
174  bool write = 5;
175  bool execute = 6;
176
177  string mapping_name = 7;
178  string build_id = 8;
179  uint64 load_bias = 9;
180
181  reserved 10 to 999;
182}
183
184message FD {
185  int32 fd = 1;
186  string path = 2;
187  string owner = 3;
188  uint64 tag = 4;
189
190  reserved 5 to 999;
191}
192
193message LogBuffer {
194  string name = 1;
195  repeated LogMessage logs = 2;
196
197  reserved 3 to 999;
198}
199
200message LogMessage {
201  string timestamp = 1;
202  uint32 pid = 2;
203  uint32 tid = 3;
204  uint32 priority = 4;
205  string tag = 5;
206  string message = 6;
207
208  reserved 7 to 999;
209}
210