pmap: fix bogus {no such process} comm field text
function old new delta read_cmdline 246 266 +20 procps_get_maps 196 193 -3 packed_usage 30413 30404 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 20/-12) Total: 8 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -588,12 +588,14 @@ void FAST_FUNC read_cmdline(char *buf, int col, unsigned pid, const char *comm)
|
||||
buf[sz] = ' ';
|
||||
sz--;
|
||||
}
|
||||
if (base[0] == '-') /* "-sh" (login shell)? */
|
||||
base++;
|
||||
|
||||
/* If comm differs from argv0, prepend "{comm} ".
|
||||
* It allows to see thread names set by prctl(PR_SET_NAME).
|
||||
*/
|
||||
if (base[0] == '-') /* "-sh" (login shell)? */
|
||||
base++;
|
||||
if (!comm)
|
||||
return;
|
||||
comm_len = strlen(comm);
|
||||
/* Why compare up to comm_len, not COMM_LEN-1?
|
||||
* Well, some processes rewrite argv, and use _spaces_ there
|
||||
@ -612,7 +614,7 @@ void FAST_FUNC read_cmdline(char *buf, int col, unsigned pid, const char *comm)
|
||||
buf[col - 1] = '\0';
|
||||
}
|
||||
} else {
|
||||
snprintf(buf, col, "[%s]", comm);
|
||||
snprintf(buf, col, "[%s]", comm ? comm : "?");
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user