On Mon, Apr 23, 2007 at 08:55:30AM -0700, Howard Chu wrote:
May be related to ITS#4841. Perhaps the thread stack is being overrun, you might try recompiling libldap_r with a larger thread stack size. (LDAP_PVT_THREAD_STACK_SIZE)
Dmitriy Kirhlarov wrote:
Hi, list.
I'm using openldap-server-2.3.35 on FreeBSD 6.2-STABLE (Feb 19). I have reproduceble crash of slapd on this host. But I can't reproduce it on other server (FreeBSD 6.1-STABLE Aug 2). Database is fine (I dump and restore it), changing thread library doesn't help too.
Hi Howard,
Dmitriy followed your recommendations and rebuilt the openldap-server-2.3.35 port with the following variables set:
LDAP_PVT_THREAD_STACK_SIZE=268435456 WITH_DEBUG=yes STRIP=""
He sent me more gdb output (bellow). Also, I have a test case which I use to reproduce the crash (attached). Hope this will shed more light on the problem.
(gdb) bt #0 0x2837f537 in pthread_testcancel () from /lib/libpthread.so.2 #1 0x2836e89a in sigaction () from /lib/libpthread.so.2 #2 0x2836888d in pthread_kill () from /lib/libpthread.so.2 #3 0x28368256 in raise () from /lib/libpthread.so.2 #4 0x28442e34 in abort () from /lib/libc.so.6 #5 0x2841f060 in __assert () from /lib/libc.so.6 #6 0x080aad9e in entry_schema_check (op=0xcecfa0c0, e=0xacbfac0, oldattrs=0x0, manage=0, text=0xcecfa094, textbuf=0xcecf9f10 "╓'8(", textlen=256) at schema_check.c:87 #7 0x286908a3 in bdb_add (op=0xcecfa0c0, rs=0xcecfa080) at add.c:63 #8 0x080ec0b5 in accesslog_response (op=0x8279400, rs=0xcecfad90) at accesslog.c:1175 #9 0x080db272 in over_back_response (op=0x8279400, rs=0xcecfad90) at backover.c:236 #10 0x08080a75 in send_ldap_response (op=0x8279400, rs=0xcecfad90) at result.c:303 #11 0x080818ac in slap_send_ldap_result (op=0x8279400, rs=0xcecfad90) at result.c:574 #12 0x08113e35 in unique_modify (op=0x8279400, rs=0xcecfad90) at unique.c:490 #13 0x080db309 in overlay_op_walk (op=0x8279400, rs=0xcecfad90, which=op_modify, oi=0x8214f00, on=0x8216100) at backover.c:498 #14 0x080db543 in over_op_func (op=0x8279400, rs=0xcecfad90, which=op_modify) at backover.c:560 #15 0x080db650 in over_op_modify (op=0x8279400, rs=0xcecfad90) at backover.c:594 #16 0x0808b0c6 in fe_op_modify (op=0x8279400, rs=0xcecfad90) at modify.c:395 #17 0x0808a33e in do_modify (op=0x8279400, rs=0xcecfad90) at modify.c:200 #18 0x0806fb84 in connection_operation (ctx=0xcecfae20, arg_v=0x8279400) at connection.c:1133 #19 0x281b36ad in ldap_int_thread_pool_wrapper () from /usr/local/lib/libldap_r-2.3.so.2 #20 0x283703a5 in pthread_create () from /lib/libpthread.so.2 #21 0x2842e3df in _ctx_start () from /lib/libc.so.6 (gdb) info threads 7 Thread 0x818b000 (sleeping) 0x28377f9b in pthread_mutexattr_init () from /lib/libpthread.so.2 6 Thread 0x8267400 (LWP 100039) 0x2837f4f7 in pthread_testcancel () from /lib/libpthread.so.2 5 Thread 0x8267c00 (runnable) 0x2844658b in select () from /lib/libc.so.6 4 Thread 0x8267e00 (sleeping) 0x28377f9b in pthread_mutexattr_init () from /lib/libpthread.so.2 * 3 Thread 0x8279000 (LWP 100113) 0x2837f537 in pthread_testcancel () from /lib/libpthread.so.2 2 Thread 0x8279200 (sleeping) 0x28377f9b in pthread_mutexattr_init () from /lib/libpthread.so.2 1 Thread 0xacc2a00 (sleeping) 0x28377f9b in pthread_mutexattr_init () from /lib/libpthread.so.2 (gdb) frame 6 #6 0x080aad9e in entry_schema_check (op=0xcecfa0c0, e=0xacbfac0, oldattrs=0x0, manage=0, text=0xcecfa094, textbuf=0xcecf9f10 "╓'8(", textlen=256) at schema_check.c:87 87 schema_check.c: No such file or directory. in schema_check.c (gdb) p *a $1 = {a_desc = 0x81dad20, a_vals = 0xacb2940, a_nvals = 0xacb2940, a_next = 0xaca0840, a_flags = 0} (gdb) p a->a_vals[0].bv_val $2 = 0x0 (gdb) p a->a_vals[0] $3 = {bv_len = 0, bv_val = 0x0}