Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 May 2003 03:25:07 +0200
From:      Thomas Moestl <t.moestl@tu-bs.de>
To:        Kris Kennaway <kris@obsecurity.org>, Garance A Drosihn <drosih@rpi.edu>, freebsd-sparc64@freebsd.org
Subject:   Re: portversion/portupgrade
Message-ID:  <20030530012506.GA662@crow.dom2ip.de>
In-Reply-To: <20030528234914.GA1987@crow.dom2ip.de>
References:  <F455E4114C4AD211BCDF00805F31BCF312B27EE3@USSAM203> <20030528214711.GA94049@rot13.obsecurity.org> <p05210608bafae02394b7@[128.113.24.47]> <20030528220215.GA94270@rot13.obsecurity.org> <20030528222144.GA667@crow.dom2ip.de> <20030528222244.GA94418@rot13.obsecurity.org> <20030528234914.GA1987@crow.dom2ip.de>

next in thread | previous in thread | raw e-mail | index | archive | help

--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, 2003/05/29 at 01:49:14 +0200, Thomas Moestl wrote:
> On Wed, 2003/05/28 at 15:22:44 -0700, Kris Kennaway wrote:
> > On Thu, May 29, 2003 at 12:21:44AM +0200, Thomas Moestl wrote:
> > > On Wed, 2003/05/28 at 15:02:15 -0700, Kris Kennaway wrote:
> > > > On Wed, May 28, 2003 at 05:55:09PM -0400, Garance A Drosihn wrote:
> > > > > Do you know if this a bug in ruby itself, or is it only in
> > > > > portversion && portupgrade?  Is it only happening on sparc64?
> > > > 
> > > > It's apparently a bug in ruby on sparc64.  I don't think the bug
> > > > exists on other 64-bit platforms, so it might be an endianness bug.
> > > 
> > > I believe that this is fixed in ruby-devel.
> > 
> > Hmm, I thought knu made a change to bsd.ruby.mk some time ago that
> > switched sparc64 over to using ruby-devel, but the problem persists
> > with freshly-built ports.
> 
> Hmmm, yes, I must have misremebered that.
> The bug really seems to be in ruby-bdb1, which is also marked
> NOT_FOR_ARCHS=sparc64.

To follow up on this, it seems that ruby_bdb1 is not at fault; the
error is in our libc db code. The attached patch should fix it.

I'll try to get approval to commit it.

	- Thomas

-- 
Thomas Moestl <t.moestl@tu-bs.de>	http://www.tu-bs.de/~y0015675/
              <tmm@FreeBSD.org>		http://people.FreeBSD.org/~tmm/
PGP fingerprint: 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C

--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="btree.diff"

Index: lib/libc/db/btree/bt_put.c
===================================================================
RCS file: /vol/ncvs/src/lib/libc/db/btree/bt_put.c,v
retrieving revision 1.3
diff -u -r1.3 bt_put.c
--- lib/libc/db/btree/bt_put.c	16 Feb 2003 17:29:09 -0000	1.3
+++ lib/libc/db/btree/bt_put.c	30 May 2003 00:10:25 -0000
@@ -78,7 +78,7 @@
 	PAGE *h;
 	indx_t index, nxtindex;
 	pgno_t pg;
-	u_int32_t nbytes;
+	u_int32_t nbytes, tmp;
 	int dflags, exact, status;
 	char *dest, db[NOVFLSIZE], kb[NOVFLSIZE];
 
@@ -131,8 +131,9 @@
 			tkey.data = kb;
 			tkey.size = NOVFLSIZE;
 			memmove(kb, &pg, sizeof(pgno_t));
+			tmp = key->size;
 			memmove(kb + sizeof(pgno_t),
-			    &key->size, sizeof(u_int32_t));
+			    &tmp, sizeof(u_int32_t));
 			dflags |= P_BIGKEY;
 			key = &tkey;
 		}
@@ -142,8 +143,9 @@
 			tdata.data = db;
 			tdata.size = NOVFLSIZE;
 			memmove(db, &pg, sizeof(pgno_t));
+			tmp = data->size;
 			memmove(db + sizeof(pgno_t),
-			    &data->size, sizeof(u_int32_t));
+			    &tmp, sizeof(u_int32_t));
 			dflags |= P_BIGDATA;
 			data = &tdata;
 		}

--4Ckj6UjgE2iN1+kY--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030530012506.GA662>