Awhile back, that former QUICK_THREADS #define evolved
into the development (only) FALSE_THREADS which can be
used to ensure a 'duplicate ENUM' convention is output
when certain string fields can't be easily duplicated.
Unfortunately, that original implementation was marred
with zeros being displayed for /proc/$$/meminfo fields
in all the child threads for a multi-threaded process.
So this commit corrects that zero memory field buglet.
Reference(s):
. QUICK_THREADS becomes FALSE_THREADS
commit
c546d9dd4409ee11cd466c99a820a3b5dadfe3f4
Signed-off-by: Jim Warner <james.warner@comcast.net>
MK_THREAD(t);
#endif
-#ifndef FALSE_THREADS
if (flags & PROC_FILLMEM) // read /proc/#/task/#statm
if (file2str(path, "statm", &ub) != -1)
statm2proc(ub.buf, t);
-#endif
if (flags & PROC_FILLSTATUS) { // read /proc/#/task/#/status
if (file2str(path, "status", &ub) != -1) {
#ifdef FALSE_THREADS
if (!p) {
- if (flags & PROC_FILLMEM)
- if (file2str(path, "statm", &ub) != -1)
- statm2proc(ub.buf, t);
-
if (flags & PROC_FILLSUPGRP)
supgrps_from_supgids(t);
#endif
#ifdef FALSE_THREADS
} else {
- if (t != p) {
- t->size = p->size;
- t->resident = p->resident;
- t->share = p->share;
- t->trs = p->trs;
- t->lrs = p->lrs;
- t->drs = p->drs;
- t->dt = p->dt;
- t->cmdline = NULL;
- t->cmdline_v = NULL;
- t->environ = NULL;
- t->environ_v = NULL;
- t->cgname = NULL;
- t->cgroup = NULL;
- t->cgroup_v = NULL;
- t->supgid = NULL;
- t->supgrp = NULL;
- t->sd_mach = NULL;
- t->sd_ouid = NULL;
- t->sd_seat = NULL;
- t->sd_sess = NULL;
- t->sd_slice = NULL;
- t->sd_unit = NULL;
- t->sd_uunit = NULL;
- }
+ t->cmdline = NULL;
+ t->cmdline_v = NULL;
+ t->environ = NULL;
+ t->environ_v = NULL;
+ t->cgname = NULL;
+ t->cgroup = NULL;
+ t->cgroup_v = NULL;
+ t->supgid = NULL;
+ t->supgrp = NULL;
+ t->sd_mach = NULL;
+ t->sd_ouid = NULL;
+ t->sd_seat = NULL;
+ t->sd_sess = NULL;
+ t->sd_slice = NULL;
+ t->sd_unit = NULL;
+ t->sd_uunit = NULL;
}
#endif