[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#6043) slapd segfaults in bdb_rdn_cmp



Luca Scamoni wrote:
> (gdb) thread apply all bt full
>
> Thread 4 (process 29343):
> #0  0x006487a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> No symbol table info available.
> #1  0x001271d7 in pthread_join () from /lib/tls/libpthread.so.0
> No symbol table info available.
> #2  0x008f8926 in ldap_pvt_thread_join (thread=4294967292,
> thread_return=0xfffffffc)
>      at ../../../libraries/libldap_r/thr_posix.c:197
> No locals.
> #3  0x080704d7 in slapd_daemon ()
> No symbol table info available.
> #4  0x0805858e in main ()
> No symbol table info available.
>
> Thread 3 (process 29344):
> #0  0x006487a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> No symbol table info available.
> #1  0x007372be in epoll_wait () from /lib/tls/libc.so.6
> No symbol table info available.
> #2  0x0806f3fb in slapd_daemon_destroy ()

This trace is bogus, there's no call from slapd_daemon_destroy() to 
epoll_wait() in the code. And you wouldn't have gotten to 
slapd_daemon_destroy() unless you were shutting down.

> No symbol table info available.
> #3  0x001263cc in start_thread () from /lib/tls/libpthread.so.0
> No symbol table info available.
> #4  0x00736c3e in clone () from /lib/tls/libc.so.6
> No symbol table info available.
>
> Thread 2 (process 29345):
> #0  0x006487a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> No symbol table info available.
> #1  0x00128c26 in pthread_cond_wait@@GLIBC_2.3.2 () from
> /lib/tls/libpthread.so.0
> No symbol table info available.
> #2  0x008f8a2b in ldap_pvt_thread_cond_wait (cond=0xfffffffc,
> mutex=0xfffffffc)
>      at ../../../libraries/libldap_r/thr_posix.c:277
> No locals.
> #3  0x008f7d5a in ldap_int_thread_pool_wrapper (xpool=0x96eeb98)
>      at ../../../libraries/libldap_r/tpool.c:654
>          task = (ldap_int_thread_task_t *) 0x0
>          work_list = Variable "work_list" is not available.
>
> Thread 1 (process 29346):
> #0  0x006d7860 in strncmp () from /lib/tls/libc.so.6
> No symbol table info available.
> #1  0x0019085e in bdb_rdn_cmp (v_e1=0x17d7270, v_e2=0x9837d58) at
> cache.c:301
>          rc = 5
> #2  0x080fc1f5 in avl_find ()
> No symbol table info available.
> #3  0x00190abd in hdb_cache_find_ndn (op=0x17d7460, txn=0x9837aa8,
> ndn=0x17d73ec, res=0x17d7318)
>      at cache.c:433
>          bdb = (struct bdb_info *) 0x97bf5d8
>          ei = {bei_parent = 0x97bf624, bei_id = 0, bei_lockpad = 0,
> bei_state = 0,
>    bei_finders = 0, bei_nrdn = {bv_len = 23,
>      bv_val = 0xffffffe9<Address 0xffffffe9 out of bounds>}, bei_rdn =
> {bv_len = 0,
>      bv_val = 0x0}, bei_modrdns = 0, bei_ckids = 0, bei_dkids = 0, bei_e
> = 0x0,
>    bei_kids = 0xb7f43994, bei_kids_mutex = {__m_reserved = 0, __m_count =
> 0, __m_owner = 0x0,
>      __m_kind = 0, __m_lock = {__status = 0, __spinlock = 135208867}},
> bei_lrunext = 0x55313c,
>    bei_lruprev = 0x542022fc}
>          eip = (EntryInfo *) 0x97bf624
>          ei2 = (EntryInfo *) 0x0
>          rc = 0
>          ptr = Variable "ptr" is not available.

This is also bogus; is this an optimized compile? It's always hard to tell how 
much to trust the debugger here; if there are no further stack frames then 
possibly the stack was overwritten. But if you compiled with any type of 
optimization, and didn't use -fno-omit-frame-pointer, then that may be all 
that's happening here.

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/