If you just run the failed test, does it segfault? What I get when I
run it is
> bar <- function() 1+1
> foo <- function() { on.exit(bar()); foo() }
> tryCatch(foo(), error=function(x) TRUE) # now simple "infinite recursion"
[1] TRUE
Clearly a segfault on an infinite recursion is undesirable, but maybe
not the end of the world: maybe it just makes your life harder when
debugging. Or maybe you'll get segfaults from non-buggy code too, which
would be really bad. But I think you're the only one who can debug
this, and find out why R's error handling isn't working in your build.
Duncan Murdoch
On 24/06/2020 2:56 p.m., Ryan Novosielski wrote:
Hi there,
I initially asked about this on r-help and was told this might be a better
venue. I’m not really convinced from reading the posting guide, but I’ll give
it a shot. It was also suggested that the R-Project doesn’t really care about
building with “non-standard” compilers, but I can’t find any evidence of that
on the website (indeed, there’s some mention of successful past builds, and the
build itself is successful).
I built R 4.0.2 with the Intel Parallel Studio XE compiler suite, versions
19.0.x to 19.1.1. Build seems to go fine. I built it like this:
module purge
module load intel/19.1.1
module list
export CC=icc
export CXX=icpc
export F77=ifort
export FC=ifort
export AR=xiar
export LD=xild
export CFLAGS="-O3 -ipo -qopenmp -axAVX,CORE-AVX2,CORE-AVX512"
export F77FLAGS="-O3 -ipo -qopenmp -axAVX,CORE-AVX2,CORE-AVX512"
export FFLAGS="-O3 -ipo -qopenmp -axAVX,CORE-AVX2,CORE-AVX512"
export CXXFLAGS="-O3 -ipo -qopenmp -axAVX,CORE-AVX2,CORE-AVX512"
export MKL="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread"
VERSION=4.0.1
/scratch/novosirj/install-files/R-${VERSION}/configure --with-blas="$MKL" --with-lapack
--prefix=/opt/sw/packages/intel-19_1/R-Project/${VERSION} && \
make -j32 && make check && make -j32 install
However, the “make check" phase fails at this part:
Testing examples for package ‘parallel’
make[2]: Leaving directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests/Examples'
make[1]: Leaving directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests'
make[1]: Entering directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests'
running strict specific tests
make[2]: Entering directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests'
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/eval-etc.R' ...
OK
comparing 'eval-etc.Rout' to
'/scratch/novosirj/install-files/R-4.0.1/tests/eval-etc.Rout.save' ... OK
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/simple-true.R'
... OK
comparing 'simple-true.Rout' to
'/scratch/novosirj/install-files/R-4.0.1/tests/simple-true.Rout.save' ... OK
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/arith-true.R'
... OK
comparing 'arith-true.Rout' to
'/scratch/novosirj/install-files/R-4.0.1/tests/arith-true.Rout.save' ... OK
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/arith.R' ... OK
comparing 'arith.Rout' to
'/scratch/novosirj/install-files/R-4.0.1/tests/arith.Rout.save' ... OK
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/lm-tests.R' ...
OK
comparing 'lm-tests.Rout' to
'/scratch/novosirj/install-files/R-4.0.1/tests/lm-tests.Rout.save' ... OK
/bin/sh: line 1: 62064 Segmentation fault (core dumped) LANGUAGE=en LC_ALL=C
SRCDIR=/scratch/novosirj/install-files/R-4.0.1/tests R_DEFAULT_PACKAGES= ../bin/R --vanilla
< /scratch/novosirj/install-files/R-4.0.1/tests/ok-errors.R > ok-errors.Rout.fail
2>&1
running code in '/scratch/novosirj/install-files/R-4.0.1/tests/ok-errors.R'
...make[2]: *** [ok-errors.Rout] Error 1
make[2]: Leaving directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests'
make[1]: *** [test-Specific] Error 2
make[1]: Leaving directory
`/mnt/scratch/novosirj/R-4.0.1-intel-19.1-build/tests'
make: *** [test-all-basics] Error 1
Is this something I should be concerned about, or something I can fix? Not
seeing any real information about what’s going wrong here. Here’s what’s
contained in ok-errors.Rout.fail:
---
R version 4.0.1 (2020-06-06) -- "See Things Now"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
#### STRICT test suite in the spirit of no-segfaults,
#### but with explicit statements.
options(error=expression(NULL))
stop("test of `options(error=expression(NULL))'")
Error: test of `options(error=expression(NULL))'
if(FALSE) {
+ ## these ought to work on machines with enough memory
+ ## These segfaulted in 1.3.x , give "could not allocate" errors now
+ integer(2^30+1)
+ double(2^30+1)
+ complex(2^30+1)
+ character(2^30+1)
+ vector("list", 2^30+2)
+ }
## bad infinite recursion / on.exit / ... interactions
## catch the error to permit different error messages emitted
## (handling of infinite recursion is different in the AST interpreter
## and the byte-code interpreter)
bar <- function() 1+1
foo <- function() { on.exit(bar()); foo() }
tryCatch(foo(), error=function(x) TRUE) # now simple "infinite recursion"
*** caught segfault ***
address 0x7fff4dc1b9f8, cause 'memory not mapped'
Traceback:
1: foo()
2: foo()
3: foo()
4: foo()
...
2712: foo()
2713: foo()
2714: foo()
2715: foo()
2716: foo()
2717: foo()
2718: foo()
2719: doTryCatch(return(expr), name, parentenv, handler)
2720: tryCatchOne(expr, names, parentenv, handlers[[1L]])
2721: tryCatchList(expr, classes, parentenv, handlers)
2722: tryCatch(foo(), error = function(x) TRUE)
An irrecoverable exception occurred. R is aborting now ...
---
Thanks in advance.
--
____
|| \\UTGERS, |---------------------------*O*---------------------------
||_// the State | Ryan Novosielski - novos...@rutgers.edu
|| \\ University | Sr. Technologist - 973/972.0922 (2x0922) ~*~ RBHS Campus
|| \\ of NJ | Office of Advanced Research Computing - MSB C630, Newark
`'
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel