Our x86 RH6.1 boxes haven't been answering "rusers" requests reliably; occasionally it'd work, but usually not. In any case, any "rusers" request would create scores of "rpc.rusersd" processes sitting around doing nothing but filling proc-table slots. We run rpc.rusersd under inetd. (Yeah, I know some people consider offering lists of active users a security problem, but we run it anyway.) I just traced this down. The problem was that, at startup, rusersd tries to determine whether it was invoked by inetd, in which case its stdin is the socket where its message is waiting. If stdin isn't a socket, it's running standalone & should become a daemon. It tests by calling getsockname(), and assumes non-inetd if getsockname() returns an error. Unfortunately it neglects to initialize the "fromlen" variable which should contain the size of the address structure; depending on what junk happens to be on the stack there, getsockname may succeed or may return EINVAL. If the latter, it forks and exits. Then inetd finds that the daemon is gone but a packet is still waiting, so forks another copy, which makes the same bad decision... until inetd gets tired and turns off the service. The fix is below. Note the date on the original file -- it's been broken a long time. If it worked in past releases, it would have been by accident. Is posting to this list the best way to report a bug fix to RedHat?? I couldn't find anything better on the web site. Stuart Levy, [EMAIL PROTECTED] --- rusersd.c~ Thu Aug 15 01:54:17 1996 +++ rusersd.c Tue Apr 4 17:36:21 2000 @@ -59,7 +59,7 @@ int sock = 0; int proto = 0; struct sockaddr_in from; - int fromlen; + int fromlen = sizeof(from); /* * See if inetd started us -- To unsubscribe: mail -s unsubscribe [EMAIL PROTECTED] < /dev/null