On Tue, May 22 2018, Nan Xiao <n...@chinadtrace.org> wrote:
> Hi tech@,
>
> Below is the patch of resetting sysload if sysctl call failed in
> usr.bin/top/machine.c, otherwise the memory of sysload is undetermined.
> (The same process as uvmexp and bcstats).
>
> Index: machine.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/top/machine.c,v
> retrieving revision 1.90
> diff -u -p -r1.90 machine.c
> --- machine.c 14 May 2018 12:31:21 -0000      1.90
> +++ machine.c 22 May 2018 09:49:39 -0000
> @@ -282,8 +282,10 @@ get_system_info(struct system_info *si)
>       }
>
>       size = sizeof(sysload);
> -     if (sysctl(sysload_mib, 2, &sysload, &size, NULL, 0) < 0)
> +     if (sysctl(sysload_mib, 2, &sysload, &size, NULL, 0) < 0) {
>               warn("sysctl failed");
> +             bzero(&sysload, sizeof(sysload));
> +     }
>       infoloadp = si->load_avg;
>       for (i = 0; i < 3; i++)
>               *infoloadp++ = ((double) sysload.ldavg[i]) / sysload.fscale;

This line of code should not run if sysload.fscale == 0.

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to