about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2018-02-08 15:06:47 +0100
committerLeah Neukirchen <leah@vuxu.org>2018-02-08 15:06:47 +0100
commit80204a5e0a2cacdaac2b2f78c2609aa56c067ec0 (patch)
tree77dbac3f11fc8d5bf0f4184131568d56e370f78e
parent7ff44f4b90a718195d4521b3caa48eeeb7699fbf (diff)
downloadextrace-80204a5e0a2cacdaac2b2f78c2609aa56c067ec0.tar.gz
extrace-80204a5e0a2cacdaac2b2f78c2609aa56c067ec0.tar.xz
extrace-80204a5e0a2cacdaac2b2f78c2609aa56c067ec0.zip
extrace: read cmdline first, it is the core information
-rw-r--r--extrace.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/extrace.c b/extrace.c
index 25d16ac..47146b6 100644
--- a/extrace.c
+++ b/extrace.c
@@ -288,6 +288,24 @@ handle_msg(struct cn_msg *cn_hdr)
 			return;
 		}
 
+		memset(&cmdline, 0, sizeof cmdline);
+		fd = openat(proc_dir_fd, "cmdline", O_RDONLY);
+		if (fd >= 0) {
+			r = read(fd, cmdline, sizeof cmdline);
+			close(fd);
+
+			if (r > 0)
+				cmdline[r] = 0;
+
+			if (full_path) {
+				r2 = readlinkat(proc_dir_fd, "exe", exe, sizeof exe);
+				if (r2 > 0)
+					exe[r2] = 0;
+			}
+
+			argvrest = strchr(cmdline, 0) + 1;
+		}
+
 		d = pid_depth(pid);
 		if (d < 0) {
 			close(proc_dir_fd);
@@ -307,24 +325,6 @@ handle_msg(struct cn_msg *cn_hdr)
 			pid_db[i].start = ev->timestamp_ns;
 		}
 
-		memset(&cmdline, 0, sizeof cmdline);
-		fd = openat(proc_dir_fd, "cmdline", O_RDONLY);
-		if (fd >= 0) {
-			r = read(fd, cmdline, sizeof cmdline);
-			close(fd);
-
-			if (r > 0)
-				cmdline[r] = 0;
-
-			if (full_path) {
-				r2 = readlinkat(proc_dir_fd, "exe", exe, sizeof exe);
-				if (r2 > 0)
-					exe[r2] = 0;
-			}
-
-			argvrest = strchr(cmdline, 0) + 1;
-		}
-
 		if (show_cwd) {
 			r3 = readlinkat(proc_dir_fd, "cwd", cwd, sizeof cwd);
 			if (r3 > 0)