Date: Sat, 15 Jan 2000 13:45:39 -0500 (EST) From: jc@irbs.com To: FreeBSD-gnats-submit@freebsd.org Subject: bin/16133: vmstat -i reports negative counts Message-ID: <200001151845.NAA25577@irbs.irbs.com>
next in thread | raw e-mail | index | archive | help
>Number: 16133
>Category: bin
>Synopsis: vmstat -i reports negative counts
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Jan 15 10:50:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: John Capo
>Release: FreeBSD 3.4-STABLE i386
>Organization:
IRBS Engineering
>Environment:
>Description:
Bogus column alignment and negative numbers.
interrupt total rate
clk0 irq0 53984189 99
rtc0 irq8 69100805 127
pci irq12 1075006802 1991
pci irq15 506470437 938
pci irq10 1078679332 1998
pci irq11 141900962 262
fdc0 irq6 1 0
wdc0 irq14 90559 0
Total -1369734209 -2537
>How-To-Repeat:
Generate a lot of interrupts from multiple network interfaces.
>Fix:
Index: vmstat.c
===================================================================
RCS file: /usr/cvs/src/usr.bin/vmstat/vmstat.c,v
retrieving revision 1.29.2.2
diff -c -r1.29.2.2 vmstat.c
*** vmstat.c 1999/08/29 15:34:34 1.29.2.2
--- vmstat.c 2000/01/15 18:43:14
***************
*** 759,765 ****
void
dointr()
{
! register long *intrcnt, inttotal, uptime;
register int nintr, inamlen;
register char *intrname;
--- 759,765 ----
void
dointr()
{
! register unsigned long *intrcnt, inttotal, uptime;
register int nintr, inamlen;
register char *intrname;
***************
*** 778,789 ****
nintr /= sizeof(long);
while (--nintr >= 0) {
if (*intrcnt)
! (void)printf("%-12s %8ld %8ld\n", intrname,
*intrcnt, *intrcnt / uptime);
intrname += strlen(intrname) + 1;
inttotal += *intrcnt++;
}
! (void)printf("Total %8ld %8ld\n", inttotal, inttotal / uptime);
}
void
--- 778,789 ----
nintr /= sizeof(long);
while (--nintr >= 0) {
if (*intrcnt)
! (void)printf("%-12s %10ld %10ld\n", intrname,
*intrcnt, *intrcnt / uptime);
intrname += strlen(intrname) + 1;
inttotal += *intrcnt++;
}
! (void)printf("Total %10lu %10ld\n", inttotal, inttotal / uptime);
}
void
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001151845.NAA25577>
