Bug 60013 - isdnlog dies after finishing init-stage
isdnlog dies after finishing init-stage
Status: CLOSED RAWHIDE
Product: Red Hat Linux
Classification: Retired
Component: isdn4k-utils (Show other bugs)
7.3
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Ngo Than
Aaron Brown
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-02-18 20:38 EST by Enrico Scholz
Modified: 2007-04-18 12:40 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2002-02-21 06:57:20 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Enrico Scholz 2002-02-18 20:38:23 EST
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.
Comment 1 Ngo Than 2002-02-22 16:59:16 EST
It's fixed in 3.1-52. Thanks for your fix.

Note You need to log in before you can comment on or make changes to this bug.