http://bugzilla.suse.com/show_bug.cgi?id=1087925
http://bugzilla.suse.com/show_bug.cgi?id=1087925#c28
--- Comment #28 from Thomas Blume
The getent strace confirms that it's a bug somewhere in the nss stack.
There are two different traces which lead to socket, only one of them leaks a fd:
[...]
So:
/lib64/libtirpc.so.3.0.0(clnt_tli_create+0x50) [0xd2a0] /lib64/libtirpc.so.3.0.0(getclnthandle+0x3f8) [0x144f8] /lib64/libtirpc.so.3.0.0(__rpcb_findaddr_timed+0x34e) [0x1503e] /lib64/libtirpc.so.3.0.0(clnt_tp_create_timed+0x50) [0xd550] /lib64/libtirpc.so.3.0.0(clnt_create_timed+0xa4) [0xd724]
/lib64/libtirpc.so.3.0.0(clnt_tli_create+0x50) [0xd2a0] /lib64/libtirpc.so.3.0.0(clnt_tp_create_timed+0xa8) [0xd5a8] /lib64/libtirpc.so.3.0.0(clnt_create_timed+0xa4) [0xd724]
Thanks for the hint Fabian. The code in clnt_tp_create_timed is: --> clnt_tp_create_timed(const char *hostname, rpcprog_t prog, rpcvers_t vers, const struct netconfig *nconf, const struct timeval *tp) { struct netbuf *svcaddr; /* servers address */ CLIENT *cl = NULL; /* client handle */ if (nconf == NULL) { rpc_createerr.cf_stat = RPC_UNKNOWNPROTO; return (NULL); } /* * Get the address of the server */ if ((svcaddr = __rpcb_findaddr_timed(prog, vers, (struct netconfig *)nconf, (char *)hostname, &cl, (struct timeval *)tp)) == NULL) { /* appropriate error number is set by rpcbind libraries */ return (NULL); } if (cl == NULL) { cl = clnt_tli_create(RPC_ANYFD, nconf, svcaddr, prog, vers, 0, 0); --< Obviously the call to __rpcb_findaddr_timed is skipped in the second trace and I'm wondering how this can happen. -- You are receiving this mail because: You are on the CC list for the bug.