Index | Thread | Search

From:
ASOU Masato <takeasou.masato@gmail.com>
Subject:
Re: 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:
Wed, 8 May 2024 10:50:51 +0900

Download raw body.

Thread
ping

Mon April 8 2024 13:05 JST ASOU Masato <takeasou.masato@gmail.com>:
>
> 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.