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

OpenLDAP 2.0.7 hangs (beyond descriptor table size 256) (ITS#1042)

Full_Name: Nathan Kay
Version: 2.0.7
OS: OpenBSD 2.7
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (

slapd intermittently stops accepting network connections when running on an
OpenBSD 2.7 x86 machine,



After it was first installed, slapd would hang / spin when the maximum amount
open file descriptors was reached (it was 64 by default). The system and shell
limits on maximum open file descriptors were raised above 1000 per process.

Now the behavior is that when slapd hits 256 open file descriptors, it stops
accepting network connections, and doesn't recover. Syslog shows the following

Feb 22 05:16:44 slapd[25515]: daemon: 256 beyond descriptor table size 256



ktrace output of the system calls (captured while a connection was trying to
be established:

 25515 slapd    CALL  accept(0x9,0x65ff10,0x65f6d4)
 25515 slapd    RET   accept 256/0x100
 25515 slapd    CALL  fcntl(0x100,0x3,0)
 25515 slapd    RET   fcntl 2
 25515 slapd    CALL  fcntl(0x100,0x4,0x6)
 25515 slapd    RET   fcntl 0
 25515 slapd    CALL  gettimeofday(0x65e9c4,0)
 25515 slapd    RET   gettimeofday 0
 25515 slapd    CALL  getpid
 25515 slapd    RET   getpid 25515/0x63ab
 25515 slapd    CALL  sendto(0x3,0x65ee3c,0x50,0,0,0)
 25515 slapd    GIO   fd 3 wrote 80 bytes
       "<167>Feb 22 05:16:44 slapd[25515]: daemon: 256 beyond descriptor table
size 256
 25515 slapd    RET   sendto 80/0x50
 25515 slapd    CALL  shutdown(0x100,0x2)
 25515 slapd    RET   shutdown 0
 25515 slapd    CALL  fstat(0x100,0x65f5dc)
 25515 slapd    RET   fstat 0
 25515 slapd    CALL  close(0x100)
 25515 slapd    RET   close 0



My read on this is that when slapd calls accept, it gets back 256 for the file
descriptor (which OpenBSD thinks is fine), but slapd doesn't want to work with
a file descriptor higher than 255.

It's worth noting that "normal" operation of this system can at times involve
slapd trying to handle over 255 connections at time.

Any ideas regarding why things work like this?