summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorMartin "eto" Misuth <et.code@ethome.sk>2015-10-06 19:50:19 +0200
committerMartin "eto" Misuth <et.code@ethome.sk>2015-10-06 19:50:19 +0200
commit23bf564d73befc4c645bc0bb0290bae4569f33c7 (patch)
tree9ee3de668904e3f41e7f638272986797ac8e7fca /freebsd
parent214d0cff0df5e434ff145ea12969f0b08354907e (diff)
Fixed reparenting issue. PPID should be updated each refresh as any process can get reparented to either
PID1 or even any other PID (if there are custom reapers in the system). Similar issue with jails, elevated process can ask kernel to attach itself into any jail at any time, thus JID and jail name can change each refresh cycle.
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/FreeBSDProcessList.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c
index e1954cae..f1b7a191 100644
--- a/freebsd/FreeBSDProcessList.c
+++ b/freebsd/FreeBSDProcessList.c
@@ -199,6 +199,7 @@ void ProcessList_goThroughEntries(ProcessList* this) {
proc->show = ! ((hideKernelThreads && Process_isKernelThread(fp)) || (hideUserlandThreads && Process_isUserlandThread(proc)));
+
if (!preExisting) {
fp->jid = kproc->ki_jid;
proc->pid = kproc->ki_pid;
@@ -206,7 +207,6 @@ void ProcessList_goThroughEntries(ProcessList* this) {
fp->kernel = 1;
else
fp->kernel = 0;
- proc->ppid = kproc->ki_ppid;
proc->tpgid = kproc->ki_tpgid;
proc->tgid = kproc->ki_pid;
proc->session = kproc->ki_sid;
@@ -219,12 +219,19 @@ void ProcessList_goThroughEntries(ProcessList* this) {
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
fp->jname = FreeBSDProcessList_readJailName(kproc);
} else {
+ if(fp->jid != kproc->ki_jid) {
+ fp->jid = kproc->ki_jid;
+ free(fp->jname);
+ fp->jname = FreeBSDProcessList_readJailName(kproc);
+ }
if (settings->updateProcessNames) {
free(proc->comm);
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
}
}
+ proc->ppid = kproc->ki_ppid;
+
proc->m_size = kproc->ki_size / pageSizeKb / 1000;
proc->m_resident = kproc->ki_rssize; // * pageSizeKb;
proc->nlwp = kproc->ki_numthreads;

© 2014-2024 Faster IT GmbH | imprint | privacy policy