Bug 6528

Summary: Lots of in.identd processes hanging around
Product: [Retired] Red Hat Linux Reporter: Bradley <nobody+disabled>
Component: inetdAssignee: Trond Eivind Glomsrxd <teg>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: low Docs Contact:
Priority: medium    
Version: 6.1CC: ard, bbaetz, marc.lefranc, spop, valankar
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-01-19 21:12:06 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Bradley 1999-10-30 09:12:21 UTC
pidentd includes a /etc/rc.d/init.d/pidentd script, but
there is no associated rpm script in postun to run
/sbin/chkconfig. This makes pidentd run as in.identd, from
/etc/inetd.conf (the relevent line is enabled by default)

However, after a single ident query, this causes lots of
in.identd processes to be created:

~# ps ax | grep -j ident
 1705 ?        S      0:00 [in.identd]
 1706 ?        S      0:00 [in.identd]
 1707 ?        S      0:00 [in.identd]
 1708 ?        S      0:00 [in.identd]
 1709 ?        S      0:00 [in.identd]
 1710 ?        S      0:00 [in.identd]
 1711 ?        S      0:00 [in.identd]
 1712 ?        S      0:00 [in.identd]
 1713 ?        S      0:00 [in.identd]
 1714 ?        S      0:00 [in.identd]
 1715 ?        S      0:00 [in.identd]
 2029 pts/0    S      0:00 grep -i ident

stracing the original process, 1705, shows that it is
waiting in accept, and answers if i manually telnet to the
ident port, then the strace exits with:

...
rt_sigprocmask(SIG_SETMASK, NULL, [RT_0], 8) = 0
rt_sigsuspend([] <unfinished ...>
--- SIGRT_0 (Real-time signal 0) ---

Is this an strace bug? stracing the other processes cause
strace to quite immediately.

I've tried adding the -w option to the ident line in
/etc/inetd.conf, even though the man page mentions that this
should be autodetected, but this doesn't help.

Comment 1 Jeff Johnson 1999-10-30 12:56:59 UTC
in.identd is now multiply threaded so seeing more than one process
is normal. The number of threads used can be changed in
/etc/identd.conf where the default is
	#-- Maximum number of threads doing kernel lookups
	kernel:threads = 8
You can either use the new /etc/rc.d/init.d/pidentd script (disabled
by default so there's no rpm %post script to run chkconfig) or the
older inetd method to start the daemon (enabled by default), but you
should not use both methods.

Dunno what strace does with multiply threaded programs ...

You might check /usr/doc/pidentd-3.0.3 fro more details about how
to start the daemon.

Comment 2 Anonymous 1999-10-31 03:17:59 UTC
I was only using it from inetd. The initscript commant was just an
addition thing.

The point of spawning it from inted is that the process doesn't need
to be running all the time. All the processes were started up from
inetd - ie in the default configuration. If the threading support does
this, then surely it should be turned off by default?

Comment 3 Jeff Johnson 1999-10-31 15:32:59 UTC
Check your inetd.conf line -- it should look like
    auth stream tcp wait root /usr/sbin/in.identd in.identd -e -o
(/etc/inetd.conf is marked %config(noreplace) -- that means that an
upgrade of netkit-base does *not* change the file and cannot change
the flags by which identd is started by inetd).

Comment 4 Anonymous 1999-10-31 23:20:59 UTC
Yep, thats what it says. The docs advised that when using wait, -w
could be used, but it should be autodetected. This didn't make a
difference.

Comment 5 ard 1999-11-01 16:23:59 UTC
I've fixed it by either running identd in daemon mode, or appending
the -w to the inetd.conf:
auth    stream  tcp     wait    root    /usr/sbin/in.identd in.identd
-e -o -w
It does not seem to detect daemon/inetd mode in the RH61 releas.
BTW: if -w does not work for you, try killall identd;killall -1 inetd
:)

Comment 6 ard 1999-11-01 16:33:59 UTC
Uh oh, me again  speaking before closely examining. My problems with
identd were of a different kind. Adding the -w option only lead to me
SIGHUPping inetd, which seem to fix some race conditions with an
already running identd outside of inetd. This lead to identd "HANGS"
resembling starting identd in a daemon mode from inetd.

------- Additional Comments From   11/01/99 14:26 -------
	I am on dial up and do not want to run identd as a daemon.  I have
always run it via inetd in the past but even with -w appended to the
auth entry in /etc/inetd.conf and a -HUP of inetd it keeps spawning 11
procs.  The first is running as user nobody, as it should I gather,
but then it's spawning a child as root and that child is spawning the
rest running as root.  They do not close themselves after an
interval.
	I tried setting 'kernel:threads = 1' in /etc/identd.conf but it still
spawns 1 as nobody and 3 as root.  As before they seem to remain
running indefinately.

Comment 7 culliton 1999-11-01 21:32:59 UTC
Whats about changing the "wait" in /etc/inetd.conf to "nowait"?

Comment 8 marc.lefranc 1999-11-10 08:46:59 UTC
I changed the identd line in inetd.conf to "nowait", since it makes
little sense to have a lot of identd running when you dial up
occasionnaly. This seems to work fine.

Comment 9 Anonymous 1999-11-14 00:59:59 UTC
nowait doesn't work. It appears to, but after I while I end up with a lot of
in.ident processes. It got up to forty processes at one stage.

Comment 10 Jeremiah Johnson 1999-12-28 21:21:59 UTC
*** Bug 8020 has been marked as a duplicate of this bug. ***

Comment 11 Simon Hill 2000-01-19 22:29:59 UTC
Shouldn't there be a -i option on in.identd when it is started from inetd with
wait?  That seems to have solved it for me.

auth stream tcp wait root /usr/sbin/in.identd in.identd -e -o -i

Comment 12 Simon Hill 2000-01-20 03:25:59 UTC
Actually, I meant 'nowait', and no, it doesn't really work either.

The only solution I have found is to uninstall pidentd, get the pidentd from
RH6.0 (pidentd-2.8.5-3), install it, and change the inetd.conf entry:

auth   stream  tcp     nowait    nobody    /usr/sbin/in.identd in.identd -l -e
-o

This new pidentd really needs to be a wrapper which can call either the threaded
or unthreaded versions depending either on command line options, or identd.conf
(preferably a command line flag (-i) would force the old behavior, and
identd.conf would only be used by the threaded version).

Comment 13 Jeff Johnson 2000-05-15 12:17:59 UTC
This is more of a legacy inetd configuration problem than a pidentd problem.
Changing component.

Comment 14 Trond Eivind Glomsrxd 2001-01-20 00:07:43 UTC
This has been fixed in recent releases, where identd no longer runs from inetd
at all