[Rd] lstat and NFS server not responding

Prof Brian Ripley ripley@stats.ox.ac.uk
Tue, 3 Apr 2001 17:37:37 +0100 (BST)


On Tue, 3 Apr 2001, Friedrich Leisch wrote:

> >>>>> On Tue, 3 Apr 2001 07:06:47 +0100 (BST),
> >>>>> Prof Brian D Ripley (PBDR) wrote:
>
>   > On Mon, 2 Apr 2001, Paul Gilbert wrote:
>   >> In a somewhat unusual circumstance I have been having trouble when
>   >> making R from source and with "R CMD build dse"
>   >> forcing the machine to look for an NFS server which was not available,
>   >> and then stalling. Our system administrator traced this back to the fact
>   >> that these go through all the directories back to "/" , doing an lstat
>   >> on everything. He suggests that that seems odd, but it doesn't take long
>   >> normally.  The problem was apparently caused by the fact that something
>   >> (possible a cdrom) on /mnt had not been unmounted properly.
>   >>
>   >> We have fixed the problem but since it was rather difficult to track
>   >> down I thought  I would point it out in case others experience a similar
>   >> difficulty. Also, is there a good explanation for doing an lstat on
>   >> everything up to /?
>
>   > Do you know what was doing it?  Since R CMD build is basically a Perl
>   > program, I can only guess that Perl was doing this, and it looks like a
>   > Perl quirk/bug that perhaps you need to track down and report (if your Perl
>   > version is current).  One thing I did notice is that the R scripts use
>   > Cwd::getcwd in Perl when the manual page recommends Cwd::cwd, and reading
>   > the code suggests Cwd::getcwd is the culprit.  (Any explanation,
>   > Fritz/Kurt?)
>
> No particular reason ... the only one is that I've always used getcwd
> (and didn't even know that cwd exists). My manpage says ``It is
> recommended that cwd (or another *cwd() function) is used in all code
> ...'' which I wouldn't take as a particulartly strong recommendation
> for cvw, but I'd be fine.

The code says (5.6.0)

# The 'natural and safe form' for UNIX (pwd may be setuid root)

sub _backtick_pwd {
    my $cwd;
    chop($cwd = `pwd`);
    $cwd;
}

# Since some ports may predefine cwd internally (e.g., NT)
# we take care not to override an existing definition for cwd().

*cwd = \&_backtick_pwd unless defined &cwd;

which looks like a recommendation for cwd to me.

> Paul, could you try if that fixes your problem (i.e., replace all
> occurrences of ``getcwd'' by ``Cwd::cwd'' in the build script and run
> it again)?

(just cwd seems to work.)

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._