Index | Thread | Search

From:
ASOU Masato <takeasou.masato@gmail.com>
Subject:
Display the details of COMMAND using the ps command from the kernel crash dump.
To:
tech@openbsd.org
Cc:
Masato ASOU <takeasou.masato@gmail.com>
Date:
Mon, 22 Apr 2024 13:05:40 +0900

Download raw body.

Thread
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.