summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Moore <devinmoore@google.com>2024-05-07 19:55:51 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-05-07 19:55:51 +0000
commit87ff7115ef98061c95f54d2d7039a2a2b4eb9f2d (patch)
tree7ba4a14f4667f46ffd2dfd21891e4a3420671b78
parentd6f6d0e6e3992d31cc9a049f60d0064a7210c9c5 (diff)
parent4647b6b3058fd8d17622e72beaea54e64db7afe3 (diff)
downloadcore-87ff7115ef98061c95f54d2d7039a2a2b4eb9f2d.tar.gz
Merge "Add page size info to tombstone" into main
-rw-r--r--debuggerd/libdebuggerd/tombstone_proto.cpp3
-rw-r--r--debuggerd/libdebuggerd/tombstone_proto_to_text.cpp7
-rw-r--r--debuggerd/proto/tombstone.proto5
3 files changed, 14 insertions, 1 deletions
diff --git a/debuggerd/libdebuggerd/tombstone_proto.cpp b/debuggerd/libdebuggerd/tombstone_proto.cpp
index 4cde98610..5546b7bcc 100644
--- a/debuggerd/libdebuggerd/tombstone_proto.cpp
+++ b/debuggerd/libdebuggerd/tombstone_proto.cpp
@@ -714,6 +714,9 @@ void engrave_tombstone_proto(Tombstone* tombstone, unwindstack::AndroidUnwinder*
error.c_str());
}
+ result.set_page_size(getpagesize());
+ result.set_has_been_16kb_mode(android::base::GetBoolProperty("ro.misctrl.16kb_before", false));
+
auto cmd_line = result.mutable_command_line();
for (const auto& arg : target_thread.command_line) {
*cmd_line->Add() = arg;
diff --git a/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp b/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
index cefa2d62e..08c1cc0da 100644
--- a/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
+++ b/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
@@ -586,6 +586,13 @@ bool tombstone_proto_to_text(const Tombstone& tombstone, CallbackType callback)
CBL("Timestamp: %s", tombstone.timestamp().c_str());
CBL("Process uptime: %ds", tombstone.process_uptime());
+ // only print this info if the page size is not 4k or has been in 16k mode
+ if (tombstone.page_size() != 4096) {
+ CBL("Page size: %d bytes", tombstone.page_size());
+ } else if (tombstone.has_been_16kb_mode()) {
+ CBL("Has been in 16kb mode: yes");
+ }
+
// Process header
const auto& threads = tombstone.threads();
auto main_thread_it = threads.find(tombstone.tid());
diff --git a/debuggerd/proto/tombstone.proto b/debuggerd/proto/tombstone.proto
index 214cbfb46..e70d525ee 100644
--- a/debuggerd/proto/tombstone.proto
+++ b/debuggerd/proto/tombstone.proto
@@ -46,7 +46,10 @@ message Tombstone {
repeated LogBuffer log_buffers = 18;
repeated FD open_fds = 19;
- reserved 22 to 999;
+ uint32 page_size = 22;
+ bool has_been_16kb_mode = 23;
+
+ reserved 24 to 999;
}
enum Architecture {