Coda File System

Re: a few more build buglets in 6.1.2 on freebsd 6.1-release

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Thu, 9 Nov 2006 12:01:08 -0500
On Wed, Nov 08, 2006 at 10:28:03PM -0500, Sean Caron wrote:
> i pulled down what i assume (?) is the most current version of coda
> from cvs --
> 
> cvs co -P coda
> 
> and built that; just --
> 
> autoconf
> cp ../coda-6.1.2/config.h.in
>   (seemed to need one, and i figured this might do the trick)

I think you missed 'autoheader', or just run the 'bootstrap.sh' script
which should call all the 'auto*' tools that are needed. The problem
with copying the old config.h.in file is that it doesn't include the
define for HAVE_NMOUNT, so your client will not actually be able to
complete the mount.

However...

> [ T(01) : 0000 : 22:11:07 ] RegisterDaemon:
> [ X(00) : 0000 : 22:11:07 ] *****  FATAL SIGNAL (6) *****

Your client crashes very early on, on a buserror.

> i attached gdb to it and got this data -- hope it might be useful?
> 
> 0x0000000040e01ca8 in sigsuspend () from /lib/libc.so.6

And the 64-bit address already tells me enough. Although several 64-bit
cleanups have been merged and I successfully wrote some files from a
client running on 64-bit Linux, there are clearly still a lot of
problems remaining. That backtrace seems to indicate that we just got a
struct SL_Entry from an internal freelist, but the magic value at the
start doesn't match what we expect. I guess something else must have
clobbered the value by trying to store an 8-byte pointer in a 4-byte
integer or something.

The problem is that the memory scribble probably happened in a
completely unrelated part of the code and if the compiler didn't warn
about any bad assignments it is probably hidden by an explicit cast and
so it can be very hard to find where it happened.

Jan
Received on 2006-11-09 12:05:39