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

Re: slapd-ldap killed by a broken client (ITS#4117)



On Lun 7 novembre 2005 17:29, Pierangelo Masarati wrote:
>
>> On Ven 4 novembre 2005 19:17, Kurt@OpenLDAP.org wrote:
>>> Before running slapd in the gdb, you should tell the
>>> gdb to pass all (excepting those gdb uses) to the
>>> program without stopping.  That is,
>>>         handle all pass nostop
>>> You might also want to avoid printing certain signals,
>>> that is,
>>>         handle SIGHUP noprint
>>>         handle SIGPIPE noprint
>>
>> I tried that, but I didn't get any really useful information:
>>
>> slapd: io.c:210: ber_flush: Assertion `( (sb)->sb_opts.lbo_valid == 0x3
>> )'
>
>
> I saw these issues quite a while a go, when I started a big project based
> on back-ldap and back-meta; it resulted in lots of work in libldap to
> prevent concurrency issues and more, which eventually made it into HEAD
> and RE23.  I definitely suggest you try 2.3.11, which is way more robust
> with respect to reentrancy of libldap; moreover, all the proxy code is
> much better.  I'd appreciate if you could try HEAD code as well; there are
> more improvements which should make it into 2.3.12 shortly.  If the
> problem persists, we can further investigate the issue.

It seems to work with 2.3.11, but I can't exactly reproduce my configuration:
- if I launch slapd with -h "ldap://*:389 ldaps://*:636" I can't open any
connection. My ldapsearch client is hanged in ldap_int_select. Note that I
haven't any TLS directive in my slapd.conf (ok, it is strange, but it used
to work in 2.2.28) [*]
- if I launch slapd with -h "ldap://*:389 ldap://*:636"; (stupid, just for
testing purpose), all works fine.

Raphael Ouazana.

[*] If I hit Ctrl-C, I can have some debugging info :
Program received signal SIGINT, Interrupt.
[Switching to Thread -1218521408 (LWP 7111)]
0x006d8c68 in pthread_join () from /lib/tls/libpthread.so.0
(gdb) thread apply all bt

Thread 2 (Thread -1218905168 (LWP 7118)):
#0  0x006dc7f9 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0
#1  0x006d97e7 in _L_mutex_lock_28 () from /lib/tls/libpthread.so.0
#2  0x00000000 in ?? ()

Thread 1 (Thread -1218521408 (LWP 7111)):
#0  0x006d8c68 in pthread_join () from /lib/tls/libpthread.so.0
#1  0x08059595 in slapd_daemon () at daemon.c:2056
#2  0x0804cba4 in main (argc=7, argv=0xbfffa7b4) at main.c:767
(gdb) thread apply all bt full

Thread 2 (Thread -1218905168 (LWP 7118)):
#0  0x006dc7f9 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0
No symbol table info available.
#1  0x006d97e7 in _L_mutex_lock_28 () from /lib/tls/libpthread.so.0
No symbol table info available.
#2  0x00000000 in ?? ()
No symbol table info available.

Thread 1 (Thread -1218521408 (LWP 7111)):
#0  0x006d8c68 in pthread_join () from /lib/tls/libpthread.so.0
No symbol table info available.
#1  0x08059595 in slapd_daemon () at daemon.c:2056
        listener_tid = 3076062128
        rc = 0
#2  0x0804cba4 in main (argc=7, argv=0xbfffa7b4) at main.c:767
        def_ctx = (void *) 0x0
        i = 7
        no_detach = 1
        rc = 1
        urls = 0xa070008 "ldap://*:389 ldaps://*:636"
        username = 0x0
        groupname = 0x0
        sandbox = 0x0
        syslogUser = 160
        configfile = 0xa070028 "/tmp/openldap-2.3.11/slapd.conf"
        configdir = 0x0
        serverName = 0xbfffdbec "slapd"
        scp = (struct sync_cookie *) 0x7
        scp_entry = (struct sync_cookie *) 0xfffffffc
        l = 168708056