Update the get_process_name call.
BUG:29824203
Test: test-art-host
Change-Id: Iba75b48b836b6ec249e6c77b9895ab3575f1027b
diff --git a/runtime/native/dalvik_system_ZygoteHooks.cc b/runtime/native/dalvik_system_ZygoteHooks.cc
index 1aa789f..7c8d903 100644
--- a/runtime/native/dalvik_system_ZygoteHooks.cc
+++ b/runtime/native/dalvik_system_ZygoteHooks.cc
@@ -168,12 +168,17 @@
// Only restart if it was streaming mode.
// TODO: Expose buffer size, so we can also do file mode.
if (output_mode == Trace::TraceOutputMode::kStreaming) {
- const char* proc_name_cutils = get_process_name();
+ static constexpr size_t kMaxProcessNameLength = 100;
+ char name_buf[kMaxProcessNameLength] = {};
+ int rc = pthread_getname_np(pthread_self(), name_buf, kMaxProcessNameLength);
std::string proc_name;
- if (proc_name_cutils != nullptr) {
- proc_name = proc_name_cutils;
+
+ if (rc == 0) {
+ // On success use the pthread name.
+ proc_name = name_buf;
}
- if (proc_name_cutils == nullptr || proc_name == "zygote" || proc_name == "zygote64") {
+
+ if (proc_name.empty() || proc_name == "zygote" || proc_name == "zygote64") {
// Either no process name, or the name hasn't been changed, yet. Just use pid.
pid_t pid = getpid();
proc_name = StringPrintf("%u", static_cast<uint32_t>(pid));