Download raw body.
Display the details of COMMAND using the ps command from the kernel crash dump.
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<pc 0:00.00 (sndiod)
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<pc 0:00.01 (ntpd)
15292 ?? S<pU 0:00.00 (ntpd)
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<pc 0:00.00 /usr/bin/sndiod
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<pc 0:00.01 ntpd: ntp engine (ntpd)
15292 ?? S<pU 0:00.00 /usr/sbin/ntpd
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<pc 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
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<pc 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
15292 ?? S<pU 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
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.
Display the details of COMMAND using the ps command from the kernel crash dump.