Merge "simpleperf: fix deobfuscating Java symbols."
diff --git a/boottime_tools/bootio/bootio_collector.cpp b/boottime_tools/bootio/bootio_collector.cpp
index dc13525..037a3e2 100644
--- a/boottime_tools/bootio/bootio_collector.cpp
+++ b/boottime_tools/bootio/bootio_collector.cpp
@@ -66,7 +66,12 @@
int ReadIo(char *filename, AppSample *sample) {
FILE *file;
char line[MAX_LINE];
- unsigned int rchar, wchar, syscr, syscw, readbytes, writebytes;
+ unsigned int rchar = 0;
+ unsigned int wchar = 0;
+ unsigned int syscr = 0;
+ unsigned int syscw = 0;
+ unsigned int readbytes = 0;
+ unsigned int writebytes = 0;
file = fopen(filename, "r");
if (!file) return 1;
@@ -289,17 +294,17 @@
cpuLoad);
isFirstSample = false;
}
- printf("-----------------------------------------------------------------------------\n");
+ if (!newerSample) {
+ LOG(ERROR) << "newerSample is null";
+ } else {
+ printf("-----------------------------------------------------------------------------"
+ "\n");
#define NUMBER "%-13" PRId64
- printf("%-15s" NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER "\n",
+ printf("%-15s" NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER "\n",
#undef NUMBER
- "Total",
- newerSample->rchar(),
- newerSample->wchar(),
- newerSample->syscr(),
- newerSample->syscw(),
- newerSample->readbytes(),
- newerSample->writebytes());
+ "Total", newerSample->rchar(), newerSample->wchar(), newerSample->syscr(),
+ newerSample->syscw(), newerSample->readbytes(), newerSample->writebytes());
+ }
}
printf("\nAggregations\n%-10s%-13s%-13s%-13s\n",
"Total",
diff --git a/profcollectd/libprofcollectd/service.rs b/profcollectd/libprofcollectd/service.rs
index 3f33802..8ae5152 100644
--- a/profcollectd/libprofcollectd/service.rs
+++ b/profcollectd/libprofcollectd/service.rs
@@ -131,7 +131,7 @@
log::info!("Config change detected, resetting profcollect.");
clear_data()?;
- write(*CONFIG_FILE, &new_config.to_string())?;
+ write(*CONFIG_FILE, new_config.to_string())?;
}
// Clear profile reports out of rentention period.
diff --git a/simpleperf/ETMDecoder.cpp b/simpleperf/ETMDecoder.cpp
index 7c2928c..5e2f92e 100644
--- a/simpleperf/ETMDecoder.cpp
+++ b/simpleperf/ETMDecoder.cpp
@@ -289,9 +289,14 @@
// addr.
if (!map->in_kernel) {
data.buffer_map = map;
- data.buffer = memory == nullptr ? nullptr : (memory->getBufferStart() + map->pgoff);
data.buffer_start = map->start_addr;
data.buffer_end = map->get_end_addr();
+ if (memory != nullptr && memory->getBufferSize() > map->pgoff &&
+ (memory->getBufferSize() - map->pgoff >= map->len)) {
+ data.buffer = memory->getBufferStart() + map->pgoff;
+ } else {
+ data.buffer = nullptr;
+ }
}
}
*num_bytes = copy_size;