On Sun, Apr 30, 2006 at 12:57:08AM +0300, Katriel Traum wrote:
> The arm processor is actually a NSLU2 unit (http://www.nslu2-linux.org)
> running sid arm port
> Attached are:
> slapd.conf
> slapd -d 16k
> slapd strace
> I use BDB, the change any change (passwd, sn, email, dn).
> I will try and reproduce the environment on an X86 and see if the
> problem persists.
Ok. The last two lines of the slapd log are:
bdb_modify_internal: replace
slapd: /build/buildd/openldap2.2-2.2.26/servers/slapd/mods.c:55:
modify_add_values: Assertion failed.
The first line comes from back-bdb/modify.c:bdb_modify_internal:
switch ( mod->sm_op ) {
[...]
case LDAP_MOD_REPLACE:
Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal:
replace\n", 0, 0, 0);
err = modify_replace_values( e, mod,
get_permissiveModify(op),
text, textbuf, textlen );
[...]
modify_replace_values calls:
(void) attr_delete( &e->e_attrs, mod->sm_desc );
if ( mod->sm_values ) {
return modify_add_values( e, mod, permissive, text, textbuf,
textlen );
}
And modify_add_values does:
switch ( mod->sm_op ) {
case LDAP_MOD_ADD:
op = "add";
break;
case LDAP_MOD_REPLACE:
op = "replace";
break;
default:
op = "?";
assert( 0 );
}
and this is the assert that fails.
So, it's pretty non-obvious how this value has changed from being
LDAP_MOD_REPLACE in bdb_modify_internal, to something else in
modify_add_values. It seems to be either a very strangely-consistent
threading bug, a subtle stack smash that I'm not seeing by looking at the
code, or a bug in the hardware/kernel. Determining which of these it is
will take somebody stepping through the code with a debugger to see what's
going on.
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
[EMAIL PROTECTED] http://www.debian.org/
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]