Description of Problem: isdnlog (started by isdn-initscript) dies when rc.sysinit has been finished. I could track it down to isdnlog/isdnlog/isdnlog.c:615 | while ((Cnt = select(maxdesc+1, &readmask, NULL, &exceptmask, Get_Interval(Interval))) < 0 && (errno == EINTR)); where the select() exits with EBADF. While rc.sysinit is running, the following descriptors are open: | COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME | isdnlog 384 root cwd DIR 3,9 1024 2 / | isdnlog 384 root rtd DIR 3,9 1024 2 / | isdnlog 384 root txt REG 3,9 3402412 10383 /sbin/isdnlog | isdnlog 384 root mem REG 3,9 100410 6055 /lib/ld-2.2.90.so | isdnlog 384 root mem REG 3,9 166592 8551 /lib/libm-2.2.90.so | isdnlog 384 root mem REG 3,9 1405380 6031 /lib/libc-2.2.90.so | isdnlog 384 root mem REG 3,9 53075 8708 /lib/libnss_files-2.2.90.so | isdnlog 384 root 0u CHR 5,1 12146 /dev/console | isdnlog 384 root 1u CHR 1,3 12058 /dev/null | isdnlog 384 root 2u CHR 1,3 12058 /dev/null | isdnlog 384 root 3w REG 3,7 71467337 189443 /var/log/isdn/isdnlog.err | isdnlog 384 root 4r CHR 45,255 13316 /dev/isdninfo | isdnlog 384 root 5r CHR 45,64 13252 /dev/isdnctrl0 | isdnlog 384 root 6w REG 3,9 1325334 20082 /tmp/isdnctrl0 | isdnlog 384 root 7r REG 3,6 77824 126368 /usr/lib/isdn/dest.cdb | isdnlog 384 root 8u IPv4 762 TCP *:isdnlog (LISTEN) | isdnlog 384 root 9u unix 0xcbae4440 897 socket | isdnlog 384 root 10r REG 3,6 582016 127601 /usr/lib/isdn/zone-de-dtag.cdb select() tests the fds 4,5 and 8. Shortly after the select() fails only these fds are active: | COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME | isdnlog 12081 root cwd DIR 3,9 1024 2 / | isdnlog 12081 root rtd DIR 3,9 1024 2 / | isdnlog 12081 root txt REG 3,9 3402476 10383 /sbin/isdnlog | isdnlog 12081 root mem REG 3,9 100410 6055 /lib/ld-2.2.90.so | isdnlog 12081 root mem REG 3,9 166592 8551 /lib/libm-2.2.90.so | isdnlog 12081 root mem REG 3,9 1405380 6031 /lib/libc-2.2.90.so | isdnlog 12081 root mem REG 3,9 53075 8708 /lib/libnss_files-2.2.90.so | isdnlog 12081 root 0u CHR 5,1 12146 /dev/console | isdnlog 12081 root 1u CHR 1,3 12058 /dev/null | isdnlog 12081 root 2u CHR 1,3 12058 /dev/null | isdnlog 12081 root 4u unix 0xcbd95400 126259 socket | isdnlog 12081 root 6w REG 3,9 1322079 20082 /tmp/isdnctrl0 | isdnlog 12081 root 7r REG 3,6 77824 126368 /usr/lib/isdn/dest.cdb | isdnlog 12081 root 10r REG 3,6 582016 127601 /usr/lib/isdn/zone-de-dtag.cdb This issue is difficulty to debug since the only trigger seems to be finishing the init-stage. Since the authors of isdnlog know about the instability of isdnlog they have built in a restart-facility. Unfortunately, this mechanism requires the full pathname of isdnlog in argv[0] so I suggest to patch /etc/init.d/isdn in a way like | if [ -f /etc/isdn/isdnlog.option ] ; then |- daemon isdnlog /dev/isdnctrl0 -D -f /etc/isdn/isdnlog.option |+ daemon /sbin/isdnlog /dev/isdnctrl0 -D -f /etc/isdn/isdnlog.option | else |- daemon isdnlog /dev/isdnctrl0 -x0x3fff -M -w2 -S -D -s -O+/var/log/isdnctrl |+ daemon /sbin/isdnlog /dev/isdnctrl0 -x0x3fff -M -w2 -S -D -s -O+/var/log/isdnctrl | fi This does not cure the bug above but will enable isdnlog to restart after this and other failures. Version-Release number of selected component (if applicable): isdn4k-utils-3.1-49 Additional Information: Previous versions with other environments (glibc/gcc) but same configuration have not shown this bug.
It's fixed in 3.1-52. Thanks for your fix.