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

Re: (ITS#5586) SLAPD crashing with SIGABRT in connection.c on Solaris - reference through nil pointer



Just an update, still present in 2.4.11, backtrace below. Still can't 
work out why it's happening,
it's something in the way that sendmail uses ldap and not the actual 
queries that cause the crash.

I can replay the connections and searches to the server, and I've used 
Suns ldap load testing software
to load up the server way over what we ever see and I can't replicate 
the SIGABRT or crash it in any
other way.

Any help appreciated.

Thanks,
          Duncan


# /usr/local/SUNWspro/bin/dbx 
/source/openldap-2.4.11/servers/slapd/.libs/slapd 
./slapd-2.4.11-core-1300-4-8-08
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' in 
your .dbxrc
Reading slapd
core file header read successfully
Reading ld.so.1
Reading libldap_r-2.4.so.2.1.0
Reading liblber-2.4.so.2.1.0
Reading libltdl.so.3.1.5
Reading libdb-4.2.so
Reading libicuuc.so.3
Reading libicudata.so.3
Reading libsasl2.so.2.0.22
Reading libdl.so.1
Reading libssl.so.0.9.8
Reading libcrypto.so.0.9.8
Reading libresolv.so.2
Reading libgen.so.1
Reading libnsl.so.1
Reading libsocket.so.1
Reading libc.so.1
Reading libgcc_s.so.1
Reading libgcc_s.so.1
Reading libpthread.so.1
Reading libm.so.2
Reading libCrun.so.1
Reading libc_psr.so.1
t@2 (l@2) terminated by signal ABRT (Abort)
0xfe2c0f90: __lwp_kill+0x0008:  bcc,a,pt  %icc,__lwp_kill+0x18  ! 0xfe2c0fa0
Current function is connection_next
  871                   assert( connections[*index].c_conn_state == 
SLAP_C_INVALID );
(dbx) where
current thread: t@2
  [1] __lwp_kill(0x0, 0x6, 0x0, 0x6, 0xfc00, 0x0), at 0xfe2c0f90
  [2] raise(0x6, 0x0, 0xfe2a4a98, 0xffffffff, 0xfe2e8284, 0x6), at 
0xfe25fd78
  [3] abort(0xfdfff3f0, 0x1, 0xfe2e9288, 0xa83f0, 0xfe2eb298, 0x0), at 
0xfe23ff98
  [4] __assert(0x1a1808, 0x1a183c, 0x367, 0x0, 0xa810c, 0x1d7b80), at 
0xfe2401d4
=>[5] connection_next(c = (nil), index = 0xfdfff6d4), line 871 in 
"connection.c"
  [6] connections_timeout_idle(now = 1217851229), line 225 in "connection.c"
  [7] slapd_daemon_task(ptr = (nil)), line 2152 in "daemon.c"
(dbx) threads
      t@1  a  l@1   ?()   LWP suspended in  __lwp_wait()
o>    t@2  a  l@2   slapd_daemon_task()   signal SIGABRT in  __lwp_kill()
      t@3  a  l@3   ldap_int_thread_pool_wrapper()   sleep on 0x258570  
in  __lwp_park()
      t@4  a  l@4   ldap_int_thread_pool_wrapper()   sleep on 0x258570  
in  __lwp_park()
      t@5  a  l@5   ldap_int_thread_pool_wrapper()   sleep on 0x258570  
in  __lwp_park()
      t@6  a  l@6   ldap_int_thread_pool_wrapper()   sleep on 0x258570  
in  __lwp_park()


Current function is connection_next
  871                   assert( connections[*index].c_conn_state == 
SLAP_C_INVALID );
(dbx) dump
c_struct = 1
index = 0xfdfff6d4
c = (nil)

(dbx) up
Current function is connections_timeout_idle
  225                   c = connection_next( c, &connindex ) )
(dbx) dump
connindex = 21
c = 0x2c14b0
now = 1217851229
i = 3

(dbx) up
Current function is slapd_daemon_task
 2152                           connections_timeout_idle( now );
(dbx) dump
rtask = (nil)
cat = RECORD
nwriters = 0
nfds = 68
writefds = RECORD
at = 1
now = 1217851229
ns = 0
nrfds = 0
readfds = RECORD
tdelta = 1
nwfds = 0
tvp = 0xfdfffb60
i = 22
tv = RECORD
last_idle_check = 1217851221
l = 1
idle = RECORD
ptr = (nil)
ebadf = 0