From bms@spc.org  Thu Jul 31 10:33:29 2003
Return-Path: <bms@spc.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 041DD37B401
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 31 Jul 2003 10:33:29 -0700 (PDT)
Received: from bigboy.spc.org (bigboy.spc.org [195.206.69.225])
	by mx1.FreeBSD.org (Postfix) with ESMTP id CBC3843F3F
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 31 Jul 2003 10:33:27 -0700 (PDT)
	(envelope-from bms@spc.org)
Received: from saboteur.dek.spc.org (unknown [81.3.72.68])
	(using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits))
	(No client certificate requested)
	by bigboy.spc.org (Postfix) with ESMTP id 11704316A
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 31 Jul 2003 18:34:18 +0100 (BST)
Received: by saboteur.dek.spc.org (Postfix, from userid 1001)
	id 980BE53F; Thu, 31 Jul 2003 18:33:15 +0100 (BST)
Message-Id: <20030731173315.980BE53F@saboteur.dek.spc.org>
Date: Thu, 31 Jul 2003 18:33:15 +0100 (BST)
From: Bruce M Simpson <bms@spc.org>
Reply-To: Bruce M Simpson <bms@spc.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: [PATCH] request total incorrectly reported by vmstat(8)
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         55124
>Category:       bin
>Synopsis:       [PATCH] request total incorrectly reported by vmstat(8)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    bms
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 31 10:40:10 PDT 2003
>Closed-Date:    Sat Sep 20 12:29:06 PDT 2003
>Last-Modified:  Sat Sep 20 12:29:06 PDT 2003
>Originator:     Bruce M Simpson
>Release:        FreeBSD 4.8-RELEASE i386
>Organization:
>Environment:
System: FreeBSD arginine.spc.org 4.8-RELEASE FreeBSD 4.8-RELEASE #0: Tue Jul  8 15:15:51 BST 2003     root@arginine.spc.org:/usr/src/sys/compile/ARGININE  i386

	
>Description:
	Under RELENG_4, the running total of requests for each subsystem
	client of the vm (vmstat -m) is incorrectly reported due to the use
	of a signed (vs unsigned) integer.
	
>How-To-Repeat:
	
>Fix:

	Please apply the patch below to correct the problem,
	in /usr/src/usr.bin/vmstat.

--- vmstat_totreq.patch begins here ---
--- vmstat.c.orig	Thu Jul 31 18:26:36 2003
+++ vmstat.c	Thu Jul 31 18:27:00 2003
@@ -758,7 +758,8 @@
 	register struct malloc_type *ks;
 	register int i, j;
 	int len, size, first, nkms;
-	long totuse = 0, totfree = 0, totreq = 0;
+	long totuse = 0, totfree = 0;
+	unsigned long totreq = 0;
 	const char *name;
 	struct malloc_type kmemstats[MAX_KMSTATS], *kmsp;
 	char buf[1024];
@@ -862,7 +863,7 @@
 		totreq += ks->ks_calls;
 	}
 	(void)printf("\nMemory Totals:  In Use    Free    Requests\n");
-	(void)printf("              %7ldK %6ldK    %8ld\n",
+	(void)printf("              %7ldK %6ldK    %8lu\n",
 	     (totuse + 1023) / 1024, (totfree + 1023) / 1024, totreq);
 }
 
--- vmstat_totreq.patch ends here ---


>Release-Note:
>Audit-Trail:

From: David Schultz <das@FreeBSD.ORG>
To: Bruce M Simpson <bms@spc.org>
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Mon, 4 Aug 2003 23:23:23 -0700

 > 	Under RELENG_4, the running total of requests for each subsystem
 > 	client of the vm (vmstat -m) is incorrectly reported due to the use
 > 	of a signed (vs unsigned) integer.
 [...]
 > -	long totuse = 0, totfree = 0, totreq = 0;
 > +	long totuse = 0, totfree = 0;
 > +	unsigned long totreq = 0;
 
 This only buys you a factor of 2, then it overflows again.  totreq
 should be a uint64_t like the ks_calls values it's accumulating.

From: Bruce Evans <bde@zeta.org.au>
To: David Schultz <das@freebsd.org>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 5 Aug 2003 23:17:33 +1000 (EST)

 [Resending after bounce]
 
 On Mon, 4 Aug 2003, David Schultz wrote:
 
 > The following reply was made to PR bin/55124; it has been noted by GNATS.
 >
 > From: David Schultz <das@FreeBSD.ORG>
 > To: Bruce M Simpson <bms@spc.org>
 > Cc: FreeBSD-gnats-submit@FreeBSD.ORG
 > Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
 > Date: Mon, 4 Aug 2003 23:23:23 -0700
 >
 >  > 	Under RELENG_4, the running total of requests for each subsystem
 >  > 	client of the vm (vmstat -m) is incorrectly reported due to the use
 >  > 	of a signed (vs unsigned) integer.
 >  [...]
 >  > -	long totuse = 0, totfree = 0, totreq = 0;
 >  > +	long totuse = 0, totfree = 0;
 >  > +	unsigned long totreq = 0;
 >
 >  This only buys you a factor of 2, then it overflows again.  totreq
 >  should be a uint64_t like the ks_calls values it's accumulating.
 
 Actually it should be (signed) int64_t like the ks_calls values it's
 accumulating.  The types of the ks_* counters have only rotted to
 unsigned types in -current (malloc.h rev.1.59).  Unsigned types should
 rarely be used since they rarely have the correct semantics.  E.g.,
 for counters, the correct handling of overflow is rarely to wrap, so
 unsigned types are only correct for counters if the factor of 2 is
 just enough.  Signed types give undefined behaviour on overflow, so
 they make automatic detection of overflows possible in principle.
 
 I just noticed that gcc implemented machine-independent trapping on
 overflow of signed addition, subtraction and multiplication about 3
 years ago (-ftrapv).  Its implementation is still primitive.  It uses
 library calls which have an overhed of about 400% for addition of
 variables in registers on an AthlonXP.  Inline i386 code ("into"
 instruction) has an overhead of between 0% and 30% in simple tests
 (depending on how well the "into" gets pipelined?).  -O2 turns off
 (breaks?) -ftrapv.
 
 Bruce

From: Bruce M Simpson <bms@spc.org>
To: David Schultz <das@FreeBSD.ORG>
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Wed, 6 Aug 2003 18:26:29 +0100

 On Mon, Aug 04, 2003 at 11:23:23PM -0700, David Schultz wrote:
 > > 	Under RELENG_4, the running total of requests for each subsystem
 > > 	client of the vm (vmstat -m) is incorrectly reported due to the use
 > > 	of a signed (vs unsigned) integer.
 > [...]
 > > -	long totuse = 0, totfree = 0, totreq = 0;
 > > +	long totuse = 0, totfree = 0;
 > > +	unsigned long totreq = 0;
 > 
 > This only buys you a factor of 2, then it overflows again.  totreq
 > should be a uint64_t like the ks_calls values it's accumulating.
 
 Agreed, it is a purely symptomatic fix for the user's problem...
 
 PS Are you stalking my PRs or something? :-) If so, please look at
 the conf/* ones if you have time...
 
 BMS
Responsible-Changed-From-To: freebsd-bugs->bms 
Responsible-Changed-By: bms 
Responsible-Changed-When: Sat 9 Aug 2003 11:09:25 PDT 
Responsible-Changed-Why:  
I'll pick this up, implement bde's suggested fix. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=55124 
State-Changed-From-To: open->analyzed 
State-Changed-By: bms 
State-Changed-When: Tue 9 Sep 2003 13:15:30 PDT 
State-Changed-Why:  
I've got a patch for this. This may bite us with PAE in STABLE going forward. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=55124 

From: Bruce M Simpson <bms@spc.org>
To: re@freebsd.org, bde@freebsd.org, das@freebsd.org
Cc: jake@freebsd.org, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 9 Sep 2003 21:11:33 +0100

 --FsscpQKzF/jJk6ya
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 Hi guys,
 
 It's a small one but one of our users complained about it, it will probably
 become more of a problem with PAE. Please see the attached patch and the
 feedback history on this PR for more info.
 
 If we're getting PAE out the front door for 4.9, perhaps we should fix this
 too? Just my 2c.
 
 BMS
 
 --FsscpQKzF/jJk6ya
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="vmstat_tot.diff"
 
 --- vmstat.c.orig	Tue Sep  9 20:58:25 2003
 +++ vmstat.c	Tue Sep  9 21:08:28 2003
 @@ -758,7 +758,7 @@
  	register struct malloc_type *ks;
  	register int i, j;
  	int len, size, first, nkms;
 -	long totuse = 0, totfree = 0, totreq = 0;
 +	int64_t totuse = 0, totfree = 0, totreq = 0;
  	const char *name;
  	struct malloc_type kmemstats[MAX_KMSTATS], *kmsp;
  	char buf[1024];
 @@ -861,8 +861,8 @@
  		totuse += ks->ks_memuse;
  		totreq += ks->ks_calls;
  	}
 -	(void)printf("\nMemory Totals:  In Use    Free    Requests\n");
 -	(void)printf("              %7ldK %6ldK    %8ld\n",
 +	(void)printf("\nMemory Totals:     In Use           Free      Requests\n");
 +	(void)printf("            %12lldK  %12lldK  %12lld\n",
  	     (totuse + 1023) / 1024, (totfree + 1023) / 1024, totreq);
  }
  
 
 --FsscpQKzF/jJk6ya--

From: Murray Stokely <murray@FreeBSD.ORG>
To: Bruce M Simpson <bms@spc.org>
Cc: re@FreeBSD.ORG, bde@FreeBSD.ORG, das@FreeBSD.ORG,
	jake@FreeBSD.ORG, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 9 Sep 2003 13:21:51 -0700

 On Tue, Sep 09, 2003 at 09:11:33PM +0100, Bruce M Simpson wrote:
 > Hi guys,
 > 
 > It's a small one but one of our users complained about it, it will probably
 > become more of a problem with PAE. Please see the attached patch and the
 > feedback history on this PR for more info.
 > 
 > If we're getting PAE out the front door for 4.9, perhaps we should fix this
 > too? Just my 2c.
 
 Yea sure this will be approved for MFC, but commit it to -CURRENT
 first and let it sit for a few days.
 
       - Murray

From: Bruce M Simpson <bms@spc.org>
To: Murray Stokely <murray@FreeBSD.ORG>
Cc: re@FreeBSD.ORG, bde@FreeBSD.ORG, das@FreeBSD.ORG,
	jake@FreeBSD.ORG, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 9 Sep 2003 21:26:36 +0100

 On Tue, Sep 09, 2003 at 01:21:51PM -0700, Murray Stokely wrote:
 > > If we're getting PAE out the front door for 4.9, perhaps we should fix this
 > > too? Just my 2c.
 > Yea sure this will be approved for MFC, but commit it to -CURRENT
 > first and let it sit for a few days.
 
 Should mention the fix isn't applicable to -CURRENT -- vmstat is significantly
 different in -CURRENT due to the use of the zone allocator, and thus doesn't
 offer a request total.
 
 BMS

From: Murray Stokely <murray@FreeBSD.ORG>
To: Bruce M Simpson <bms@spc.org>
Cc: re@FreeBSD.ORG, bde@FreeBSD.ORG, das@FreeBSD.ORG,
	jake@FreeBSD.ORG, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 9 Sep 2003 13:59:31 -0700

 On Tue, Sep 09, 2003 at 09:26:36PM +0100, Bruce M Simpson wrote:
 > On Tue, Sep 09, 2003 at 01:21:51PM -0700, Murray Stokely wrote:
 > > > If we're getting PAE out the front door for 4.9, perhaps we should fix this
 > > > too? Just my 2c.
 > > Yea sure this will be approved for MFC, but commit it to -CURRENT
 > > first and let it sit for a few days.
 > 
 > Should mention the fix isn't applicable to -CURRENT -- vmstat is significantly
 > different in -CURRENT due to the use of the zone allocator, and thus doesn't
 > offer a request total.
 
 Gotcha.  Please commit to -STABLE then.
 
 	 - Murray

From: Bruce Evans <bde@zeta.org.au>
To: Bruce M Simpson <bms@spc.org>
Cc: re@freebsd.org, bde@freebsd.org, das@freebsd.org,
	jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Wed, 10 Sep 2003 07:00:13 +1000 (EST)

 On Tue, 9 Sep 2003, Bruce M Simpson wrote:
 
 > It's a small one but one of our users complained about it, it will probably
 > become more of a problem with PAE. Please see the attached patch and the
 > feedback history on this PR for more info.
 
 % --- vmstat.c.orig	Tue Sep  9 20:58:25 2003
 % +++ vmstat.c	Tue Sep  9 21:08:28 2003
 % @@ -758,7 +758,7 @@
 %  	register struct malloc_type *ks;
 %  	register int i, j;
 %  	int len, size, first, nkms;
 % -	long totuse = 0, totfree = 0, totreq = 0;
 % +	int64_t totuse = 0, totfree = 0, totreq = 0;
 %  	const char *name;
 %  	struct malloc_type kmemstats[MAX_KMSTATS], *kmsp;
 %  	char buf[1024];
 % @@ -861,8 +861,8 @@
 %  		totuse += ks->ks_memuse;
 %  		totreq += ks->ks_calls;
 %  	}
 % -	(void)printf("\nMemory Totals:  In Use    Free    Requests\n");
 % -	(void)printf("              %7ldK %6ldK    %8ld\n",
 % +	(void)printf("\nMemory Totals:     In Use           Free      Requests\n");
 % +	(void)printf("            %12lldK  %12lldK  %12lld\n",
 %  	     (totuse + 1023) / 1024, (totfree + 1023) / 1024, totreq);
 %  }
 %
 
 I like this, except it has some printf format errors and a format
 printf error (a long line).  %lld is for printing long longs, but the
 types printed with it are the unary promotion of int64_t, which may
 be different in theory and is different in practice on all supported
 64-bit arches.
 
 The simplest fix is to use intmax_t for the variables and %jd in the
 format.  I think long is used because it was longest in 1980.  intmax_t
 is now longest.
 
 The long line could be fixed by not expanding the fields so much.  I
 think only real memory is involved, and machines with 1000 TB of it
 are still uncommon.
 
 BTW, I sometimes miss these totals in -current.  Userland can handle
 this better but -current only exports the data in an inconvenient ASCII
 form.
 
 Bruce

From: Bruce M Simpson <bms@spc.org>
To: Bruce Evans <bde@zeta.org.au>
Cc: re@freebsd.org, bde@freebsd.org, das@freebsd.org,
	jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Tue, 9 Sep 2003 22:08:32 +0100

 On Wed, Sep 10, 2003 at 07:00:13AM +1000, Bruce Evans wrote:
 > The simplest fix is to use intmax_t for the variables and %jd in the
 > format.  I think long is used because it was longest in 1980.  intmax_t
 > is now longest.
 > 
 > The long line could be fixed by not expanding the fields so much.  I
 > think only real memory is involved, and machines with 1000 TB of it
 > are still uncommon.
 
 Yeah, the fields should get shortened. Thanks for mentioning intmax_t,
 this wasn't obvious from your original feedback. I will rework accordingly.
 
 BMS

From: Bruce M Simpson <bms@spc.org>
To: Bruce Evans <bde@zeta.org.au>
Cc: re@freebsd.org, bde@freebsd.org, das@freebsd.org,
	jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Thu, 18 Sep 2003 20:39:14 +0100

 Hi Bruce E,
 
 On Wed, Sep 10, 2003 at 07:00:13AM +1000, Bruce Evans wrote:
 > On Tue, 9 Sep 2003, Bruce M Simpson wrote:
 > > It's a small one but one of our users complained about it, it will probably
 > > become more of a problem with PAE. Please see the attached patch and the
 > > feedback history on this PR for more info.
 [original patch snipped]
 > I like this, except it has some printf format errors and a format
 > printf error (a long line).  %lld is for printing long longs, but the
 > types printed with it are the unary promotion of int64_t, which may
 > be different in theory and is different in practice on all supported
 > 64-bit arches.
 
 I tried using intmax_t but this does not appear to be defined in
 RELENG_4. I will shorten the line length accordingly.
 
 Given that there are no clear instructions as to handle the printing of
 an int64 type in the printf(3) manual page in RELENG_4 (and that the
 j length modifier does not exist on that branch), what do you recommend?
 
 Only RELENG_4 is affected. Sorry I haven't gotten back to you on this
 earlier (paywork), I should like to get a fix concluded soon as time is
 wearing on and re@ only have a small amount of it (they are busy with
 PAE right now).
 
 Regards,
 BMS

From: Bruce M Simpson <bms@spc.org>
To: Bruce Evans <bde@zeta.org.au>
Cc: re@freebsd.org, bde@freebsd.org, das@freebsd.org,
	jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Thu, 18 Sep 2003 23:48:47 +0100

 --xHFwDpU9dbj6ez1V
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 In light of BDE's suggested fixes not being applicable to -STABLE (lack
 of C99 types, and lack of tier 1 support for 64-bit architectures other
 than Alpha) I plan to commit the attached patch.
 
 Please let me know your thoughts.
 
 Regards,
 BMS
 
 --xHFwDpU9dbj6ez1V
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="vmstat_tot.diff"
 
 --- vmstat.c.orig	Tue Sep  9 20:58:25 2003
 +++ vmstat.c	Thu Sep 18 23:45:14 2003
 @@ -758,7 +758,7 @@
  	register struct malloc_type *ks;
  	register int i, j;
  	int len, size, first, nkms;
 -	long totuse = 0, totfree = 0, totreq = 0;
 +	int64_t totuse = 0, totfree = 0, totreq = 0;
  	const char *name;
  	struct malloc_type kmemstats[MAX_KMSTATS], *kmsp;
  	char buf[1024];
 @@ -861,8 +861,8 @@
  		totuse += ks->ks_memuse;
  		totreq += ks->ks_calls;
  	}
 -	(void)printf("\nMemory Totals:  In Use    Free    Requests\n");
 -	(void)printf("              %7ldK %6ldK    %8ld\n",
 +	(void)printf("\nMemory Totals:  In Use       Free    Requests\n");
 +	(void)printf("            %9lldK %9lldK    %8lld\n",
  	     (totuse + 1023) / 1024, (totfree + 1023) / 1024, totreq);
  }
  
 
 --xHFwDpU9dbj6ez1V--

From: Bruce Evans <bde@zeta.org.au>
To: Bruce M Simpson <bms@spc.org>
Cc: re@freebsd.org, bde@freebsd.org, das@freebsd.org,
	jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Fri, 19 Sep 2003 14:39:18 +1000 (EST)

 On Thu, 18 Sep 2003, Bruce M Simpson wrote:
 
 > On Wed, Sep 10, 2003 at 07:00:13AM +1000, Bruce Evans wrote:
 > > I like this, except it has some printf format errors and a format
 > > printf error (a long line).  %lld is for printing long longs, but the
 
 > I tried using intmax_t but this does not appear to be defined in
 > RELENG_4. I will shorten the line length accordingly.
 
 Oops.  I forgot that we don't support C99 yet, especially in -RELENG_4.
 
 > Given that there are no clear instructions as to handle the printing of
 > an int64 type in the printf(3) manual page in RELENG_4 (and that the
 > j length modifier does not exist on that branch), what do you recommend?
 
 RELENG_4 has nothing better than using long long and %lld format.  It
 also has quad_t and %qd format, but those don't really work because
 gcc's format checker doesn't understand quad_t and treats %qd as %lld.
 
 Quoting other mail for the patch:
 
 % --- vmstat.c.orig	Tue Sep  9 20:58:25 2003
 % +++ vmstat.c	Thu Sep 18 23:45:14 2003
 % @@ -758,7 +758,7 @@
 %  	register struct malloc_type *ks;
 %  	register int i, j;
 %  	int len, size, first, nkms;
 % -	long totuse = 0, totfree = 0, totreq = 0;
 % +	int64_t totuse = 0, totfree = 0, totreq = 0;
 %  	const char *name;
 %  	struct malloc_type kmemstats[MAX_KMSTATS], *kmsp;
 %  	char buf[1024];
 % @@ -861,8 +861,8 @@
 %  		totuse += ks->ks_memuse;
 %  		totreq += ks->ks_calls;
 %  	}
 % -	(void)printf("\nMemory Totals:  In Use    Free    Requests\n");
 % -	(void)printf("              %7ldK %6ldK    %8ld\n",
 % +	(void)printf("\nMemory Totals:  In Use       Free    Requests\n");
 % +	(void)printf("            %9lldK %9lldK    %8lld\n",
 %  	     (totuse + 1023) / 1024, (totfree + 1023) / 1024, totreq);
 %  }
 %
 %
 
 This still has the printf format error :-).  The simplest fix is to use
 long long throughout.
 
 Bruce

From: Bruce M Simpson <bms@spc.org>
To: Bruce Evans <bde@zeta.org.au>
Cc: Bruce M Simpson <bms@spc.org>, re@freebsd.org, bde@freebsd.org,
	das@freebsd.org, jake@freebsd.org, FreeBSD-gnats-submit@freebsd.org
Subject: Re: bin/55124: [PATCH] request total incorrectly reported by vmstat(8)
Date: Sat, 20 Sep 2003 20:03:35 +0100

 On Fri, Sep 19, 2003 at 02:39:18PM +1000, Bruce Evans wrote:
 > RELENG_4 has nothing better than using long long and %lld format.  It
 > also has quad_t and %qd format, but those don't really work because
 > gcc's format checker doesn't understand quad_t and treats %qd as %lld.
 
 Understood. I will use the 'long long' type in my commit presently instead.
 
 BMS
State-Changed-From-To: analyzed->closed 
State-Changed-By: bms 
State-Changed-When: Sat 20 Sep 2003 12:28:23 PDT 
State-Changed-Why:  
Committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=55124 
>Unformatted:
