From: ASOU Masato Subject: Re: Display the details of COMMAND using the ps command from the kernel crash dump. To: tech@openbsd.org Cc: Masato ASOU Date: Wed, 8 May 2024 10:50:51 +0900 ping Mon April 8 2024 13:05 JST ASOU Masato : > > ok, comments? > > Before apply patch: > $ doas ps axe -N /var/crash/bsd.0 -M /var/crash/bsd.0.core > PID TT STAT TIME COMMAND > 1 ?? S 0:00.00 (init) > 68923 ?? IpU 0:00.00 (resolvd) > 76890 ?? RpU 0:00.01 (dhcpleased) > 46069 ?? Sp 0:00.00 (dhcpleased) > 21951 ?? IU 0:00.01 (dhcpleased) > 93421 ?? RpU 0:00.01 (slaacd) > 90234 ?? Sp 0:00.01 (slaacd) > 89330 ?? Sp 0:00.00 (slaacd) > 20157 ?? S 0:00.01 (sshd) > 75440 ?? S 0:00.03 (sshd) > 21027 ?? Ip 0:00.00 (cron) > 35439 ?? I 22223 ?? IpU 0:00.00 (sndiod) > 63060 ?? Ipc 0:00.01 (smtpd) > 97728 ?? Ipc 0:00.01 (smtpd) > 2094 ?? Ipc 0:00.01 (smtpd) > 26623 ?? Ip 0:00.01 (smtpd) > 82051 ?? Ipc 0:00.01 (smtpd) > 4344 ?? Ipc 0:00.01 (smtpd) > 98746 ?? Ip 0:00.01 (smtpd) > 39326 ?? I 0:00.00 (sshd) > 83362 ?? Ip 0:00.01 (ntpd) > 72271 ?? I 15292 ?? S 95913 ?? Ipc 0:00.00 (pflogd) > 98638 ?? IU 0:00.00 (pflogd) > 54693 ?? Ipc 0:00.01 (syslogd) > 71714 ?? SpU 0:00.00 (syslogd) > 63047 p0 R+U 0:00.00 (sysctl) > 17918 p0 Dp 0:00.01 (ksh) > 17242 C0 I+pU 0:00.00 (getty) > 46098 C1 I+pU 0:00.00 (getty) > 70097 C2 I+pU 0:00.00 (getty) > 30089 C3 I+pU 0:00.00 (getty) > 61763 C5 I+pU 0:00.00 (getty) > > After apply patch: > $ doas /usr/obj/bin/ps/ps ax -N /var/crash/bsd.0 -M /var/crash/bsd.0.core > PID TT STAT TIME COMMAND > 1 ?? S 0:00.00 /sbin/init > 68923 ?? IpU 0:00.00 /sbin/resolvd > 76890 ?? RpU 0:00.01 dhcpleased: frontend (dhcpleased) > 46069 ?? Sp 0:00.00 dhcpleased: engine (dhcpleased) > 21951 ?? IU 0:00.01 /sbin/dhcpleased > 93421 ?? RpU 0:00.01 slaacd: frontend (slaacd) > 90234 ?? Sp 0:00.01 slaacd: engine (slaacd) > 89330 ?? Sp 0:00.00 /sbin/slaacd > 20157 ?? S 0:00.01 sshd: asou@ttyp0 (sshd) > 75440 ?? S 0:00.03 sshd: asou [priv] (sshd) > 21027 ?? Ip 0:00.00 /usr/sbin/cron > 35439 ?? I 22223 ?? IpU 0:00.00 sndiod: helper (sndiod) > 63060 ?? Ipc 0:00.01 smtpd: scheduler (smtpd) > 97728 ?? Ipc 0:00.01 smtpd: queue (smtpd) > 2094 ?? Ipc 0:00.01 smtpd: dispatcher (smtpd) > 26623 ?? Ip 0:00.01 smtpd: lookup (smtpd) > 82051 ?? Ipc 0:00.01 smtpd: control (smtpd) > 4344 ?? Ipc 0:00.01 smtpd: crypto (smtpd) > 98746 ?? Ip 0:00.01 /usr/sbin/smtpd > 39326 ?? I 0:00.00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 > startups (sshd) > 83362 ?? Ip 0:00.01 ntpd: dns engine (ntpd) > 72271 ?? I 15292 ?? S 95913 ?? Ipc 0:00.00 pflogd: [running] -s 160 -i pflog0 -f > /var/log/pflog (pflogd) > 98638 ?? IU 0:00.00 pflogd: [priv] (pflogd) > 54693 ?? Ipc 0:00.01 /usr/sbin/syslogd > 71714 ?? SpU 0:00.00 syslogd: [priv] (syslogd) > 63047 p0 R+U 0:00.00 sysctl ddb.trigger > 17918 p0 Dp 0:00.01 -ksh (ksh) > 17242 C0 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC0 > 46098 C1 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC1 > 70097 C2 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC2 > 30089 C3 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC3 > 61763 C5 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC5 > $ doas /usr/obj/bin/ps/ps axe -N /var/crash/bsd.0 -M /var/crash/bsd.0.core > PID TT STAT TIME COMMAND > 1 ?? S 0:00.00 /sbin/init > 68923 ?? IpU 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 76890 ?? RpU 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 46069 ?? Sp 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 21951 ?? IU 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 93421 ?? RpU 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 90234 ?? Sp 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 89330 ?? Sp 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 20157 ?? S 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 75440 ?? S 0:00.03 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 21027 ?? Ip 0:00.00 /usr/sbin/cron > 35439 ?? I PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 22223 ?? IpU 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 63060 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 97728 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 2094 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 26623 ?? Ip 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 82051 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 4344 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 98746 ?? Ip 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 39326 ?? I 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 83362 ?? Ip 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 72271 ?? I PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 15292 ?? S PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 95913 ?? Ipc 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 98638 ?? IU 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 54693 ?? Ipc 0:00.01 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 71714 ?? SpU 0:00.00 LOGNAME=root HOME=/root PWD=/root > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > SHELL=/bin/sh USER > 63047 p0 R+U 0:00.00 DOAS_USER=asou HOME=/root LOGNAME=root > MAIL=/var/mail/asou > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/loca > 17918 p0 Dp 0:00.01 USER=asou LOGNAME=asou HOME=/home/asou > PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin > MAIL=/var/mai > 17242 C0 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC0 > 46098 C1 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC1 > 70097 C2 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC2 > 30089 C3 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC3 > 61763 C5 I+pU 0:00.00 /usr/libexec/getty std.9600 ttyC5 > -- > ASOU Masato > > Index: kvm_proc.c > =================================================================== > RCS file: /cvs/src/lib/libkvm/kvm_proc.c,v > retrieving revision 1.63 > diff -u -p -r1.63 kvm_proc.c > --- kvm_proc.c 22 Feb 2022 17:35:01 -0000 1.63 > +++ kvm_proc.c 8 Mar 2024 01:50:32 -0000 > @@ -187,7 +187,7 @@ _kvm_ureadm(kvm_t *kd, const struct kinf > */ > if (KREAD(kd, (u_long)p->p_vmspace, &vm)) > return (NULL); > - addr = (u_long)&vm.vm_map.addr.rbh_root.rbt_root; > + addr = (u_long)vm.vm_map.addr.rbh_root.rbt_root; > while (1) { > if (addr == 0) > return (NULL); > @@ -228,7 +228,7 @@ _kvm_ureadm(kvm_t *kd, const struct kinf > return (NULL); > > if (_kvm_pread(kd, kd->pmfd, (void *)kd->swapspc, > - (size_t)kd->nbpg, (off_t)pg.phys_addr) != kd->nbpg) > + (size_t)kd->nbpg, _kvm_pa2off(kd, pg.phys_addr)) != kd->nbpg) > return (NULL); > } else { > if (kd->swfd == -1 || > @@ -432,21 +432,20 @@ static char ** > kvm_doargv(kvm_t *kd, const struct kinfo_proc *p, int nchr, int isenv, > void (*info)(struct ps_strings *, u_long *, int *)) > { > - static struct ps_strings *ps; > + struct proc pp; > + struct process pr; > + struct ps_strings *ps; > struct ps_strings arginfo; > u_long addr; > char **ap; > int cnt; > > - if (ps == NULL) { > - struct _ps_strings _ps; > - const int mib[2] = { CTL_VM, VM_PSSTRINGS }; > - size_t len; > - > - len = sizeof(_ps); > - sysctl(mib, 2, &_ps, &len, NULL, 0); > - ps = (struct ps_strings *)_ps.val; > - } > + /* get ps_strings address */ > + if (KREAD(kd, (u_long)p->p_paddr, &pp)) > + return (0); > + if (KREAD(kd, (u_long)pp.p_p, &pr)) > + return (0); > + ps = (struct ps_strings *)pr.ps_strings; > > /* > * Pointers are stored at the top of the user stack.