From jc@irbs.com  Sat Jan 15 10:45:47 2000
Return-Path: <jc@irbs.com>
Received: from irbs.irbs.com (irbs.irbs.com [209.36.62.129])
	by hub.freebsd.org (Postfix) with ESMTP id 054D014D2F
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 15 Jan 2000 10:45:46 -0800 (PST)
	(envelope-from jc@irbs.com)
Received: (from jc@localhost)
	by irbs.irbs.com (8.8.5/8.8.5) id NAA25577;
	Sat, 15 Jan 2000 13:45:39 -0500 (EST)
Message-Id: <200001151845.NAA25577@irbs.irbs.com>
Date: Sat, 15 Jan 2000 13:45:39 -0500 (EST)
From: jc@irbs.com
Reply-To: jc@irbs.com
To: FreeBSD-gnats-submit@freebsd.org
Subject: vmstat -i reports negative counts
X-Send-Pr-Version: 3.2

>Number:         16133
>Category:       bin
>Synopsis:       vmstat -i reports negative counts
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    n_hibma
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 15 10:50:01 PST 2000
>Closed-Date:    Tue Jan 18 09:39:51 PST 2000
>Last-Modified:  Tue Jan 18 09:41:26 PST 2000
>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:
Responsible-Changed-From-To: freebsd-bugs->dan 
Responsible-Changed-By: dan 
Responsible-Changed-When: Sun Jan 16 13:32:40 PST 2000 
Responsible-Changed-Why:  
I'll take this. 
Responsible-Changed-From-To: dan->n_hibma 
Responsible-Changed-By: dan 
Responsible-Changed-When: Mon Jan 17 17:50:03 PST 2000 
Responsible-Changed-Why:  
Nick fixed this in v1.36 of vmstat.c  So, we pass this on to him as a 
friendly reminder to MFC. :-) 
State-Changed-From-To: open->closed 
State-Changed-By: n_hibma 
State-Changed-When: Tue Jan 18 09:39:51 PST 2000 
State-Changed-Why:  
Friendly reminder had effect it seems. rev.1.36 MFC-ed. 
Thank you dan. 
>Unformatted:
