[Rd] R 4.0.1-4.0.2 built with Intel Composer 19.0-19.1.1, error in "make check" on CentOS 7.7

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Wed Jun 24 22:27:25 CEST 2020


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 - novosirj using rutgers.edu
> || \\ University | Sr. Technologist - 973/972.0922 (2x0922) ~*~ RBHS Campus
> ||  \\    of NJ	 | Office of Advanced Research Computing - MSB C630, Newark
>      `'
> 
> 
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list