[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ABS client library (fwd)

Michael's more complete answer for anyone interested.

The next question is, who's still using 1.2.11? and is it time to label it deprecated ?


---------- Forwarded message ----------
Date: Thu, 23 Jun 2005 14:21:01 -0400
From: michael shiplett <michael.shiplett@xxxxxxxxx>
To: Albert Bertram <bertrama@xxxxxxxxx>
Subject: Re: ABS client library (fwd)

Wes asked me to get what information I can from you relating to
umcelinux' broken openafs. When I tried compiling with umcelinux
openafs 1.2.13, I received an undefined reference to `AssertionFailed'.
I'm guessing that this is the known issue you found with it.

the afsrpc library is a pthread-safe version of the afs rx protocol.

the underlying issue with 1.2.11 is it was originally built against
a version of libc where pthread_condvar_t was smaller than the
current version (which has padding bytes). compounding this problem
is that the version of libc/headers with padding uses the same
version as the unpadded version. several rx structures contain
condition variables so the padding/lack of padding creates problems
when taking offsets into the structures.

rebuilding 1.2.11 should fix this issue, although using the latest
production version of 1.2.13 makes sense as well.

I did some digging, and I found that this is defined by
openafs-1.2.13/2/util/assert.c so I compared the libafsrpc Makefile
to the libafsrpc in 1.3.84 and I noticed that 1.3.84 includes the
assert.o in libafsrpc, where 1.2.13, and I imagine that 1.2.11 does

this is a second issue but, as you note, it is a case of differences between 1.2.x and 1.3.x. The simple solution is to link against the static afs/libafsutil.a to pull in assert.o. I've updated the absys configure script to do this.

I recompiled openafs with assert.o included in libafsrpc and then
abssys compiled cleanly. So, my specific question is: is this the
problem that we have with our openafs, or is there something else
I need to fix?

to sum up, the main issue is how the changing size of pthread_condvar_t affects libafsrpc in a way which prevents newly compiled programs from using previously compiled libraries.

afsutil/AssertionFailed is just an openafs version issue which is
straightforward to handle without requiring any system changes.