mirror of https://github.com/xzeldon/htop.git
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.
This commit is contained in:
parent
214d0cff0d
commit
23bf564d73
|
@ -199,6 +199,7 @@ void ProcessList_goThroughEntries(ProcessList* this) {
|
||||||
|
|
||||||
proc->show = ! ((hideKernelThreads && Process_isKernelThread(fp)) || (hideUserlandThreads && Process_isUserlandThread(proc)));
|
proc->show = ! ((hideKernelThreads && Process_isKernelThread(fp)) || (hideUserlandThreads && Process_isUserlandThread(proc)));
|
||||||
|
|
||||||
|
|
||||||
if (!preExisting) {
|
if (!preExisting) {
|
||||||
fp->jid = kproc->ki_jid;
|
fp->jid = kproc->ki_jid;
|
||||||
proc->pid = kproc->ki_pid;
|
proc->pid = kproc->ki_pid;
|
||||||
|
@ -206,7 +207,6 @@ void ProcessList_goThroughEntries(ProcessList* this) {
|
||||||
fp->kernel = 1;
|
fp->kernel = 1;
|
||||||
else
|
else
|
||||||
fp->kernel = 0;
|
fp->kernel = 0;
|
||||||
proc->ppid = kproc->ki_ppid;
|
|
||||||
proc->tpgid = kproc->ki_tpgid;
|
proc->tpgid = kproc->ki_tpgid;
|
||||||
proc->tgid = kproc->ki_pid;
|
proc->tgid = kproc->ki_pid;
|
||||||
proc->session = kproc->ki_sid;
|
proc->session = kproc->ki_sid;
|
||||||
|
@ -219,12 +219,19 @@ void ProcessList_goThroughEntries(ProcessList* this) {
|
||||||
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
|
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
|
||||||
fp->jname = FreeBSDProcessList_readJailName(kproc);
|
fp->jname = FreeBSDProcessList_readJailName(kproc);
|
||||||
} else {
|
} else {
|
||||||
|
if(fp->jid != kproc->ki_jid) {
|
||||||
|
fp->jid = kproc->ki_jid;
|
||||||
|
free(fp->jname);
|
||||||
|
fp->jname = FreeBSDProcessList_readJailName(kproc);
|
||||||
|
}
|
||||||
if (settings->updateProcessNames) {
|
if (settings->updateProcessNames) {
|
||||||
free(proc->comm);
|
free(proc->comm);
|
||||||
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
|
proc->comm = FreeBSDProcessList_readProcessName(fpl->kd, kproc, &proc->basenameOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc->ppid = kproc->ki_ppid;
|
||||||
|
|
||||||
proc->m_size = kproc->ki_size / pageSizeKb / 1000;
|
proc->m_size = kproc->ki_size / pageSizeKb / 1000;
|
||||||
proc->m_resident = kproc->ki_rssize; // * pageSizeKb;
|
proc->m_resident = kproc->ki_rssize; // * pageSizeKb;
|
||||||
proc->nlwp = kproc->ki_numthreads;
|
proc->nlwp = kproc->ki_numthreads;
|
||||||
|
|
Loading…
Reference in New Issue