Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: tools/android/memtrack_helper/memtrack_helper.c

Issue 2576713002: Fix memtrack_helper for newer versions Android. (Closed)
Patch Set: nit Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/android/memtrack_helper/memtrack_helper.c
diff --git a/tools/android/memtrack_helper/memtrack_helper.c b/tools/android/memtrack_helper/memtrack_helper.c
index 9ce05fdea509945fea5d84b86b8fbe94e20a64bc..b118557351d4cdc73952252076e04aee389a1aaa 100644
--- a/tools/android/memtrack_helper/memtrack_helper.c
+++ b/tools/android/memtrack_helper/memtrack_helper.c
@@ -9,11 +9,9 @@
#include <dlfcn.h>
#include <errno.h>
#include <fcntl.h>
-#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/stat.h>
@@ -66,16 +64,16 @@ static void send_shutdown_request(struct sockaddr_un* addr) {
static void handle_one_request(int client_sock) {
char buf[32];
char response[4096] = "";
- ssize_t rsize = recv(client_sock, buf, sizeof(buf), 0);
-
+ ssize_t rsize = recv(client_sock, buf, sizeof(buf) - 1, 0);
if (rsize < 1)
return;
+ buf[rsize] = '\0';
if (buf[0] == kShutdownRequest)
exit(EXIT_SUCCESS);
pid_t pid = -1;
- if (sscanf(buf, "%d", &pid) != 1)
+ if (sscanf(buf, "%d", &pid) != 1 || pid < 0)
return send_response(client_sock, "ERR invalid pid");
memtrack_proc_handle handle = memtrack_proc_new();
@@ -97,12 +95,12 @@ static void handle_one_request(int client_sock) {
memtrack_proc_graphics_pss(handle));
}
if (memtrack_proc_gl_total) {
- response_ptr +=
- sprintf(response_ptr, "gl_total %zd\n", memtrack_proc_gl_total(handle));
+ response_ptr += sprintf(response_ptr, "gl_total %zd\n",
+ memtrack_proc_gl_total(handle));
}
if (memtrack_proc_gl_pss) {
- response_ptr +=
- sprintf(response_ptr, "gl_pss %zd\n", memtrack_proc_gl_pss(handle));
+ response_ptr += sprintf(response_ptr, "gl_pss %zd\n",
+ memtrack_proc_gl_pss(handle));
}
if (memtrack_proc_other_total) {
response_ptr += sprintf(response_ptr, "other_total %zd\n",
@@ -124,7 +122,8 @@ static void daemonize() {
if (pid < 0)
exit_with_failure("fork");
if (pid > 0) {
- /* Terminate the main process attached to TTY once the daemon re-forks. */
+ // Main process keeps TTY while intermediate child do daemonization
+ // because adb can immediately kill a process disconnected from adb's TTY.
int ignore;
wait(&ignore);
exit(EXIT_SUCCESS);
@@ -180,8 +179,7 @@ int main(int argc, char** argv) {
memtrack_proc_other_pss =
(memtrack_proc_other_pss_t)dlsym(libhandle, "memtrack_proc_other_pss");
- if (!memtrack_init || !memtrack_proc_new || !memtrack_proc_destroy ||
- !memtrack_proc_get) {
+ if (!memtrack_proc_new || !memtrack_proc_destroy || !memtrack_proc_get) {
exit_with_failure("dlsym() libmemtrack.so");
}
@@ -211,12 +209,18 @@ int main(int argc, char** argv) {
if (argc > 1 && strcmp(argv[1], "-d") == 0)
daemonize();
- res = memtrack_init();
- if (res == -ENOENT) {
- exit_with_failure("Unable to load memtrack module in libhardware. "
- "Probably implementation is missing in this ROM.");
- } else if (res != 0) {
- exit_with_failure("memtrack_init() returned non-zero status.");
+ long pid = getpid();
+ fprintf(stderr, "pid=%ld\n", pid);
+ __android_log_print(ANDROID_LOG_INFO, kLogTag, "pid=%ld\n", pid);
+
+ if (memtrack_init) {
+ res = memtrack_init();
+ if (res == -ENOENT) {
+ exit_with_failure("Unable to load memtrack module in libhardware. "
+ "Probably implementation is missing in this ROM.");
+ } else if (res != 0) {
+ exit_with_failure("memtrack_init() returned non-zero status.");
+ }
}
if (listen(server_fd, 128 /* max number of queued requests */))
« no previous file with comments | « tools/android/memtrack_helper/memtrack_helper.h ('k') | tools/android/memtrack_helper/memtrack_helper_test_client.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698