blob: f0d3d3f4bf477d3435a815cd18b6e612398b0a7d [file] [log] [blame]
Elliott Hughesdf2e7eb2022-09-12 22:24:18 +00001//
2// Protobuf definition for Android tombstones.
3//
4// An app can get hold of these for any `REASON_CRASH_NATIVE` instance of
5// `android.app.ApplicationExitInfo`.
6//
7// https://developer.android.com/reference/android/app/ApplicationExitInfo#getTraceInputStream()
8//
9
Josh Gao76e1e302021-01-26 15:53:11 -080010syntax = "proto3";
11
Josh Gaod3df0ae2021-02-01 14:35:30 -080012option java_package = "com.android.server.os";
13option java_outer_classname = "TombstoneProtos";
14
Josh Gaofc4fb212021-02-10 16:59:50 -080015// NOTE TO OEMS:
16// If you add custom fields to this proto, do not use numbers in the reserved range.
17
Josh Gao76e1e302021-01-26 15:53:11 -080018message Tombstone {
19 Architecture arch = 1;
20 string build_fingerprint = 2;
21 string revision = 3;
22 string timestamp = 4;
23
24 uint32 pid = 5;
25 uint32 tid = 6;
26 uint32 uid = 7;
27 string selinux_label = 8;
28
Josh Gao31348a72021-03-29 21:53:42 -070029 repeated string command_line = 9;
Josh Gao76e1e302021-01-26 15:53:11 -080030
Josh Gaodbb83de2021-03-01 23:13:13 -080031 // Process uptime in seconds.
32 uint32 process_uptime = 20;
33
Josh Gao76e1e302021-01-26 15:53:11 -080034 Signal signal_info = 10;
35 string abort_message = 14;
Peter Collingbourne1a1f7d72021-03-08 16:53:54 -080036 repeated Cause causes = 15;
Josh Gao76e1e302021-01-26 15:53:11 -080037
38 map<uint32, Thread> threads = 16;
39 repeated MemoryMapping memory_mappings = 17;
40 repeated LogBuffer log_buffers = 18;
41 repeated FD open_fds = 19;
Josh Gaofc4fb212021-02-10 16:59:50 -080042
Josh Gaodbb83de2021-03-01 23:13:13 -080043 reserved 21 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -080044}
45
46enum Architecture {
47 ARM32 = 0;
48 ARM64 = 1;
49 X86 = 2;
50 X86_64 = 3;
Josh Gaofc4fb212021-02-10 16:59:50 -080051
52 reserved 4 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -080053}
54
55message Signal {
56 int32 number = 1;
57 string name = 2;
58
59 int32 code = 3;
60 string code_name = 4;
61
62 bool has_sender = 5;
63 int32 sender_uid = 6;
64 int32 sender_pid = 7;
65
66 bool has_fault_address = 8;
67 uint64 fault_address = 9;
Mitch Phillips5ddcea22021-04-19 09:59:17 -070068 // Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
69 // only include metadata, and not the contents.
70 MemoryDump fault_adjacent_metadata = 10;
Josh Gaofc4fb212021-02-10 16:59:50 -080071
Mitch Phillips5ddcea22021-04-19 09:59:17 -070072 reserved 11 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -080073}
74
Peter Collingbourne1a1f7d72021-03-08 16:53:54 -080075message HeapObject {
76 uint64 address = 1;
77 uint64 size = 2;
78
79 uint64 allocation_tid = 3;
80 repeated BacktraceFrame allocation_backtrace = 4;
81
82 uint64 deallocation_tid = 5;
83 repeated BacktraceFrame deallocation_backtrace = 6;
84}
85
86message MemoryError {
87 enum Tool {
88 GWP_ASAN = 0;
89 SCUDO = 1;
90
91 reserved 2 to 999;
92 }
93 Tool tool = 1;
94
95 enum Type {
96 UNKNOWN = 0;
97 USE_AFTER_FREE = 1;
98 DOUBLE_FREE = 2;
99 INVALID_FREE = 3;
100 BUFFER_OVERFLOW = 4;
101 BUFFER_UNDERFLOW = 5;
102
103 reserved 6 to 999;
104 }
105 Type type = 2;
106
107 oneof location {
108 HeapObject heap = 3;
109 }
110
111 reserved 4 to 999;
112}
113
Josh Gao76e1e302021-01-26 15:53:11 -0800114message Cause {
115 string human_readable = 1;
Peter Collingbourne1a1f7d72021-03-08 16:53:54 -0800116 oneof details {
117 MemoryError memory_error = 2;
118 }
Josh Gaofc4fb212021-02-10 16:59:50 -0800119
Peter Collingbourne1a1f7d72021-03-08 16:53:54 -0800120 reserved 3 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800121}
122
123message Register {
124 string name = 1;
125 uint64 u64 = 2;
Josh Gaofc4fb212021-02-10 16:59:50 -0800126
127 reserved 3 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800128}
129
130message Thread {
131 int32 id = 1;
132 string name = 2;
133 repeated Register registers = 3;
Christopher Ferrisfe751c52021-04-16 09:40:40 -0700134 repeated string backtrace_note = 7;
Christopher Ferrisc95047d2022-03-14 15:02:11 -0700135 repeated string unreadable_elf_files = 9;
Josh Gao76e1e302021-01-26 15:53:11 -0800136 repeated BacktraceFrame current_backtrace = 4;
137 repeated MemoryDump memory_dump = 5;
Peter Collingbourne1a1f7d72021-03-08 16:53:54 -0800138 int64 tagged_addr_ctrl = 6;
Elliott Hughesd13ea522022-01-13 09:20:26 -0800139 int64 pac_enabled_keys = 8;
Josh Gaofc4fb212021-02-10 16:59:50 -0800140
Christopher Ferrisc95047d2022-03-14 15:02:11 -0700141 reserved 10 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800142}
143
144message BacktraceFrame {
145 uint64 rel_pc = 1;
146 uint64 pc = 2;
147 uint64 sp = 3;
148
149 string function_name = 4;
150 uint64 function_offset = 5;
151
152 string file_name = 6;
153 uint64 file_map_offset = 7;
154 string build_id = 8;
Josh Gaofc4fb212021-02-10 16:59:50 -0800155
156 reserved 9 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800157}
158
Mitch Phillips5ddcea22021-04-19 09:59:17 -0700159message ArmMTEMetadata {
160 // One memory tag per granule (e.g. every 16 bytes) of regular memory.
161 bytes memory_tags = 1;
162 reserved 2 to 999;
163}
164
Josh Gao76e1e302021-01-26 15:53:11 -0800165message MemoryDump {
166 string register_name = 1;
167 string mapping_name = 2;
168 uint64 begin_address = 3;
169 bytes memory = 4;
Mitch Phillips5ddcea22021-04-19 09:59:17 -0700170 oneof metadata {
171 ArmMTEMetadata arm_mte_metadata = 6;
172 }
Josh Gaofc4fb212021-02-10 16:59:50 -0800173
Mitch Phillips5ddcea22021-04-19 09:59:17 -0700174 reserved 5, 7 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800175}
176
177message MemoryMapping {
178 uint64 begin_address = 1;
179 uint64 end_address = 2;
180 uint64 offset = 3;
181
182 bool read = 4;
183 bool write = 5;
184 bool execute = 6;
185
186 string mapping_name = 7;
187 string build_id = 8;
188 uint64 load_bias = 9;
Josh Gaofc4fb212021-02-10 16:59:50 -0800189
190 reserved 10 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800191}
192
193message FD {
194 int32 fd = 1;
195 string path = 2;
196 string owner = 3;
197 uint64 tag = 4;
Josh Gaofc4fb212021-02-10 16:59:50 -0800198
199 reserved 5 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800200}
201
202message LogBuffer {
203 string name = 1;
204 repeated LogMessage logs = 2;
Josh Gaofc4fb212021-02-10 16:59:50 -0800205
206 reserved 3 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800207}
208
209message LogMessage {
210 string timestamp = 1;
211 uint32 pid = 2;
212 uint32 tid = 3;
213 uint32 priority = 4;
214 string tag = 5;
215 string message = 6;
Josh Gaofc4fb212021-02-10 16:59:50 -0800216
217 reserved 7 to 999;
Josh Gao76e1e302021-01-26 15:53:11 -0800218}