Hello,
I use my test programe with 90 process run
concurrently, every
process search first to make sure there is no entry the same
with
the new entry we want to add, then run the adding
function.
Slapd run on RadHat 7.0, for a random
time slapd will crash
with these message :
entry_rdwr_wlock: ID: 40458
=> index_entry_add( 40458, "uid=nh3g002,dc=N,dc=newwayit,dc=com" ) => ldbm_cache_open( "/usr/local/var/openldap-ldbm/uid.dbb", 7, 600 ) ldbm_cache_open (blksize 4096) (maxids 1022) (maxindirect 9) <= ldbm_cache_open (opened 5) => key_change(ADD,9e0a) <= key_change 0 => ldbm_cache_open( "/usr/local/var/openldap-ldbm/FreeCname.dbb", 7, 600 ) ldbm_cache_open (blksize 4096) (maxids 1022) (maxindirect 9) <= ldbm_cache_open (opened 6) => key_change(ADD,9e0a) <= key_change 0 => key_change(ADD,9e0a) <= key_change 0 => key_change(ADD,9e0a) <= key_change 0 => key_change(ADD,9e0a) <= key_change 0 => key_change(ADD,9e0a) <= key_change 0 => ldbm_cache_open( "/usr/local/var/openldap-ldbm/FreeEname.dbb", 7, 600 ) ldbm_cache_open (blksize 4096) (maxids 1022) (maxindirect 9) <= ldbm_cache_open (opened 7) => key_change(ADD,9e0a) ch_calloc of 232525802 elems of 4 bytes failed slapd: ch_malloc.c:77: ch_calloc: Assertion `0' failed. I trace the source code , and I am sure that the problem
is
ih the ./libraries/liblber/memory.c . It run new = calloc( n,
s )
and get no memory allocated, but I don't know why! Is it
means
my server need more memory ?
Marco Chen
|