wrat@unisql.UUCP (Louis Marco) (06/13/91)
To recap: I have a 386 box running Interactive's SYSV port. Most of its files actually exist on a local Sun fileserver, and the 386 mounts them via NFS. When someone runs "make" or certain other programs in such a way as to run an executable on the 386 that uses datafiles on the Sun the Sun's console fills up with "rfs_read: attempt to read from non-file" messages, and nfsd on the server thrashes until the offending process on the 386 dies/is killed. The problem is Interactive's broken C-shell, which is using read() on directories. This manifests by the shell suddenly dying when you execute $ setenv PATH /usr/local/remote-fs:$PATH where remote-fs is something mounted via NFS. The shell checks its path, the read on the remote dir fails and the shell simply exits. (This particular manifestation causes users on my system to lock themselves out of their accounts when they add /usr/local/bin to their paths in .cshrc, since usr/local is on the Sun...). Something like "make", which starts lots and lots of shells, will bring the whole LAN to its knees... The workaround is: don't use the broken C-shell. Use Bourne shell, or tcsh, or whatever. This will cure most of the problem, but some other stuff (rm?) is still using read because we still get an occasional rfs_read error. We *can* now set correct paths and run builds without copying everything to a local disc. "You can't go back and you can't stand still, if the thunder don't get you then the lightenin' will"