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

(ITS#4659) Core dump after MOD



Full_Name: Quanah Gibson-Mount
Version: 2.3.27+LWL mods+Alloc mods
OS: Linux 2.6 kernel
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (171.66.155.86)


My master core dumped this morning after a MOD operation.

The core shows:

(gdb) info threads
  11 process 11380  0x00002aac5cfede2c in pthread_join () from
/lib/libpthread.so.0
  10 process 11384  0xffffffffff600410 in ?? ()
  9 process 11386  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  8 process 11387  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  7 process 11393  0x00002aac5cfef66a in pthread_cond_timedwait@@GLIBC_2.3.2 ()
from /lib/libpthread.so.0
  6 process 11988  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  5 process 11989  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  4 process 13390  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  3 process 15843  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from
/lib/libpthread.so.0
  2 process 15844  0x00002aac5cfef4e4 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
* 1 process 11385  0x00002aac5da20545 in raise () from /lib/libc.so.6



(gdb) thread 11
[Switching to thread 11 (process 11380)]#0  0x00002aac5cfede2c in pthread_join
() from /lib/libpthread.so.0
(gdb) bt
#0  0x00002aac5cfede2c in pthread_join () from /lib/libpthread.so.0
#1  0x0000000000425c61 in slapd_daemon () at daemon.c:2244
#2  0x0000000000416214 in main (argc=3, argv=0x7fffffe4ccc8) at main.c:854


daemon.c:2244 is:

                ldap_pvt_thread_join( listener_tid, (void *) NULL );

from

#define SLAPD_LISTENER_THREAD 1
#if defined( SLAPD_LISTENER_THREAD )
        {
                ldap_pvt_thread_t       listener_tid;

                /* listener as a separate THREAD */
                rc = ldap_pvt_thread_create( &listener_tid,
                        0, slapd_daemon_task, NULL );

                if ( rc != 0 ) {
                        Debug( LDAP_DEBUG_ANY,
                        "listener ldap_pvt_thread_create failed (%d)\n", rc, 0,
0 );
                        return rc;
                }

                /* wait for the listener thread to complete */
                ldap_pvt_thread_join( listener_tid, (void *) NULL );
        }
#else


main.c:854 is:

        rc = slapd_daemon();


[Switching to thread 10 (process 11384)]#0  0xffffffffff600410 in ?? ()
(gdb) bt
#0  0xffffffffff600410 in ?? ()
#1  0x00002aac5da87e3d in time () from /lib/libc.so.6
#2  0x0000000000424d08 in slapd_daemon_task (ptr=0x0) at daemon.c:1714
#3  0x00002aac5cfecb55 in start_thread () from /lib/libpthread.so.0
#4  0x00002aac5dac37f0 in clone () from /lib/libc.so.6


daemon.c: 1714 is

                now = slap_get_time();


from

#define SLAPD_EBADF_LIMIT 16

                time_t  now;

                SLAP_EVENT_DECL;

                struct timeval          tv;
                struct timeval          *tvp;

                struct timeval          cat;
                time_t                          tdelta = 1;
                struct re_s*            rtask;
                now = slap_get_time();

                if( ( global_idletimeout > 0 ) &&
                        difftime( last_idle_check +
                        global_idletimeout/SLAPD_IDLE_CHECK_LIMIT, now ) < 0 )
{
                        connections_timeout_idle( now );
                        last_idle_check = now;
                }
                tv = idle;


(gdb) thread 9
[Switching to thread 9 (process 11386)]#0  0x00002aac5cff17c4 in
__lll_mutex_lock_wait () from /lib/libpthread.so.0
(gdb) bt
#0  0x00002aac5cff17c4 in __lll_mutex_lock_wait () from /lib/libpthread.so.0
#1  0x00002aaaaab73548 in ?? ()
#2  0x0000000000000000 in ?? ()
#3  0x00002aac5cfee971 in pthread_mutex_lock () from /lib/libpthread.so.0
#4  0x0000000000000000 in ?? ()
#5  0x00002aac5cbc8d40 in ?? ()
#6  0x0000000000000000 in ?? ()
#7  0x0000000000000065 in ?? ()
#8  0x000000000000000d in ?? ()
#9  0x0000000000000000 in ?? ()
#10 0x0000000000000000 in ?? ()
#11 0x0000000000000000 in ?? ()
#12 0x0000000000000000 in ?? ()
#13 0x0000000000000000 in ?? ()
#14 0x0000000000000000 in ?? ()
#15 0x0000000000000000 in ?? ()
#16 0x0000000000000000 in ?? ()
#17 0x0000000000000001 in ?? ()
#18 0x0000000000000000 in ?? ()
#19 0x0000000000000000 in ?? ()
#20 0x00002aabb7ee63d0 in ?? ()
#21 0x00000000004260b4 in connection_get (s=28) at connection.c:311
#22 0x00000000004283d1 in connection_read_thread (ctx=0x417ff4e0, argv=0x1c) at
connection.c:1258
#23 0x00002aac5cc6b522 in ldap_int_thread_pool_wrapper (xpool=0x2aaaaab73548) at
tpool.c:478
#24 0x00002aac5cfecb55 in start_thread () from /lib/libpthread.so.0
#25 0x00002aac5dac37f0 in clone () from /lib/libc.so.6


connection.c:311 is:

                ldap_pvt_thread_mutex_lock( &c->c_mutex );


from
        if( c != NULL ) {
                ber_socket_t    sd;

                ldap_pvt_thread_mutex_lock( &c->c_mutex );

                ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd );
                if( c->c_struct_state != SLAP_C_USED ) {
                        /* connection must have been closed due to resched */


connection.c:1258 is

        c = connection_get( s );


from


#ifdef SLAP_LIGHTWEIGHT_DISPATCHER
static int
connection_read( ber_socket_t s, conn_readinfo *cri )
#else
int connection_read(ber_socket_t s)
#endif
{
        int rc = 0;
        Connection *c;

        assert( connections != NULL );

        /* get (locked) connection */
        c = connection_get( s );



tpool.c:478

                ctx->ltc_start_routine(ltc_key, ctx->ltc_arg);


from

                LDAP_SLIST_INSERT_HEAD(&pool->ltp_active_list, ctx,
ltc_next.al);
                pool->ltp_active_count++;
                ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);

                ctx->ltc_start_routine(ltc_key, ctx->ltc_arg);


etc...

I can provide core file, source, etc.

thread 10 is where it always starts out at in gdb.

--Quanah