Subject: processes with closed file descriptors?
To: None <netbsd-users@NetBSD.ORG>
From: Greg Earle <earle@isolar.Tujunga.CA.US>
List: netbsd-users
Date: 02/24/1995 00:10:08
I've ported lsof 3.19 to NetBSD 1.0 on a SPARC. (Hopefully it will work for
-current as well.)
I got some strange output while testing which I'd attributed to either a bug
or unfinished business on my part:
netbsd4me:1:188 % lsof |& egrep COMMAND\|bad
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
ypbind 57 root 0u bad mount for 0xf7fff1d0 at 0
ypbind 57 root 1u bad mount for 0xf7fff1d0 at 0
ypbind 57 root 2u bad mount for 0xf7fff1d0 at 0
cron 89 root 0u bad mount for 0xf7fff1d0 at 0
cron 89 root 1u bad mount for 0xf7fff1d0 at 0
cron 89 root 2u bad mount for 0xf7fff1d0 at 0
afsd 130 root 0u bad mount for 0xf7fff1d0 at 0
afsd 130 root 1u bad mount for 0xf7fff1d0 at 0
afsd 130 root 2u bad mount for 0xf7fff1d0 at 0
[ ... X 5 more times for the other 5 afsd's .... ]
xfs 167 root 1u bad mount for 0xf7fff1d0 at 0
I thought, "I'll find out what these are; I'll use fstat(1)".
Well, fstat doesn't like them either:
netbsd4me# fstat | egrep CMD\|none
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W
root xfs 167 1 - - none -
root afsd 135 0 - - none -
root afsd 135 1 - - none -
root afsd 135 2 - - none -
[ ... X 5 more times for the other 5 afsd's .... ]
root cron 89 0 - - none -
root cron 89 1 - - none -
root cron 89 2 - - none -
root ypbind 57 0 - - none -
root ypbind 57 1 - - none -
root ypbind 57 2 - - none -
I suspect that these processes have closed off all of these file descriptors,
but I looked at e.g. ypbind.c and saw nowhere in the code any close()'s or
dup()'s et al. that would indicate that the fd's were closed. I ran "ypbind"
manually under "ktrace -i -d" and saw no indication that stdin/stdout/stderr
are ever referenced.
Anyone surmise what's happening here? Do stdin/stdout/stderr for some daemons
get "lost"? Or are both programs at fault here for not interpreting something
in the correct way? (Otherwise, "lsof" works perfectly.)
While I'm at it, "lsof" purports to support procfs. There's a "procfs.h"
with a "struct pfsnode" in /usr/src/sys/miscfs/procfs, but nowhere under
/usr/include (at least, not in 1.0). Should there be?
Thanks,
- Greg