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

Re: (ITS#4300) slapd crash with monitor backend



> OK.
>
> Here are some news: it confirms the problem. I have a gdb trace
> same thing on the fresh 2.3.15
>
>     (gdb) bt
>     #0  0x402f583b in raise () from /lib/tls/libc.so.6
>     #1  0x402f6fa2 in abort () from /lib/tls/libc.so.6
>     #2  0x402ef2df in __assert_fail () from /lib/tls/libc.so.6
>     #3  0x0812191e in monitor_cache_dup ()

It would be great to see the line numbers and the values of the args.  To
get that, you should run an unstripped version of slapd, as clearly
indicated in <http://www.openldap.org/faq/data/cache/59.html>

>     (gdb)
>
>
> and on the slapd terminal:
>
>     => send_search_entry: conn 10 dn="cn=Backend
>     5,cn=Backends,cn=Monitor" (attrsOnly)
>     ber_flush: 46 bytes to sd 13
>     <= send_search_entry: conn 10 exit.
>     => send_search_entry: conn 10 dn="cn=Backend
>     6,cn=Backends,cn=Monitor" (attrsOnly)
>     ber_flush: 46 bytes to sd 13
>     <= send_search_entry: conn 10 exit.
>     send_ldap_result: conn=10 op=2 p=3
>     send_ldap_response: msgid=3 tag=101 err=0
>     ber_flush: 14 bytes to sd 13
>     connection_get(13): got connid=10
>     connection_read(13): checking for input on id=10
>     ber_get_next
>     ber_get_next: tag 0x30 len 82 contents:
>     ber_get_next
>     do_search
>     ber_get_next on fd 13 failed errno=11 (Resource temporarily
> unavailable)
>     ber_scanf fmt ({miiiib) ber:
>      >>> dnPrettyNormal: <cn=Connection 9,cn=Connections,cn=Monitor>
>     => ldap_bv2dn(cn=Connection 9,cn=Connections,cn=Monitor,0)
>     ldap_err2string
>     <= ldap_bv2dn(cn=Connection 9,cn=Connections,cn=Monitor)=0 Success
>     => ldap_dn2bv(272)
>     ldap_err2string
>     <= ldap_dn2bv(cn=Connection 9,cn=Connections,cn=Monitor)=0 Success
>     => ldap_dn2bv(272)
>     ldap_err2string
>     <= ldap_dn2bv(cn=connection 9,cn=connections,cn=monitor)=0 Success
>     <<< dnPrettyNormal: <cn=Connection 9,cn=Connections,cn=Monitor>,
>     <cn=connection 9,cn=connections,cn=monitor>
>     ber_scanf fmt (m) ber:
>     ber_scanf fmt ({M}}) ber:
>     ==> limits_get: conn=10 op=3 dn="cn=adm,dc=univmed,dc=fr"
>     => monitor_back_search
>     slapd: cache.c:114: monitor_cache_lock: Assertion `e != ((void *)0)'
>     failed.
>
>
> Compile options:
> export CFLAGS="-O3 -fomit-frame-pointer -mcpu=pentiumpro -march=i686
> -ffast-math -D_REENTRANT -fPIC"

I think the -fomit-frame-pointer is conflicting with having readable
backtraces from a debugger.  In order to better keep tracking your issues
I suggest you remove this option (I don't see its usefulness except in
massive scientific computations) and, in case you'll need to walk thru the
code with gdb, I suggest you remove any optimization at all.

p.



Ing. Pierangelo Masarati
Responsabile Open Solution
OpenLDAP Core Team

SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
------------------------------------------
Office:   +39.02.23998309          
Mobile:   +39.333.4963172
Email:    pierangelo.masarati@sys-net.it
------------------------------------------