Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.Internal(La_rs(x,FALSE)) crashes R after long (reproducible) script on windows only

Tags:

r

The .Internal(La_rs(x,FALSE)) call inside of the eigen function used within fields:::Krig.engine.default causes my R console[1] to crash after it gets triggered during a huge script.

I am sure that that's the line that's causing the detonation. however, the same line does not crash on a fresh session using:

x <- structure(c(0.00251355321405019, -0.000589785531216647, -0.000172411748626129, -0.000589785531217227, 0.000897505637785858, -0.000714600035538855, -0.000172411748626269, -0.000714600035538766, 0.00123946691634644), .Dim = c(3L, 3L))
.Internal(La_rs(x,FALSE))

you can reproduce this console crash with the following three lines (takes about ten minutes):

# install.packages( c("MonetDB.R", "MonetDBLite" , "survey" , "SAScii" , "descr" , "downloader" , "digest" , "sas7bdat" , "R.utils" ,"survey","ggplot2","scales","mapproj","sqldf","maptools","raster","rgeos","stringr","plyr","mgcv","spatstat","rgeos") , repos=c("http://dev.monetdb.org/Assets/R/", "http://cran.rstudio.com/"))
# path.to.7z <- "7za"       # macintosh/unix users need to specify 7z
#  setwd("C:/My Directory/")
# warning: some large downloads
downloader::source_url( "https://raw.githubusercontent.com/davidbrae/swmap/8eecde1683efab65a7e27eb7c92e7967a98dc639/how%20to%20map%20the%20american%20community%20survey.R" , prompt = FALSE )

sorry the example isn't more minimal, the crash disappeared when i removed different things..

february 22nd 2016 edit: even worse, when i try a script intended to trigger the crash on its own, it does not die!

downloader::source_url("https://gist.githubusercontent.com/ajdamico/0c256ed3a77d77eecfd6/raw/ce0570effd37c6384f2e27f1b38335078adcb49d/La_rs_bughunt.R",echo=T,prompt=F)

thanks!

[1] R version 3.2.3 (2015-12-10) Platform: x86_64-w64-mingw32/x64 (64-bit)

if i run the whole script at once, R crashes without any info in Rterm.exe. but if i break the script up into two parts, R gives me this error:

> x
              [,1]          [,2]          [,3]
[1,]  0.0025135532 -0.0005897855 -0.0001724117
[2,] -0.0005897855  0.0008975056 -0.0007146000
[3,] -0.0001724117 -0.0007146000  0.0012394669
> .Internal(La_rs(x,TRUE))
Error: 'a' must be a complex matrix

a bit more debugging info: it looks like the .Internal() function La_rs has been destroyed somehow?

> debug::mtrace(.Internal(La_rs(x,TRUE)))
Error in debug::mtrace(.Internal(La_rs(x, TRUE))) : 
  Dunno wot to do with .Internal(La_rs(x, TRUE))
> x
              [,1]          [,2]          [,3]
[1,]  0.0025135532 -0.0005897855 -0.0001724117
[2,] -0.0005897855  0.0008975056 -0.0007146000
[3,] -0.0001724117 -0.0007146000  0.0012394669
> class(x)
[1] "matrix"
> .Internal(La_rs(x,FALSE))
Error: 'a' must be a complex matrix
> .Internal(La_rs(x,TRUE))
Error: 'a' must be a complex matrix
> .Internal(La_rs(1,TRUE))
Error: 'a' must be a complex matrix
> .Internal(La_rs(matrix(1,2,3,4),TRUE))
Error: 'a' must be a complex matrix

february 21 2016 update: i was able to reproduce this error (without R dying) on a second windows script. here is the permanent link

# install.packages( c( 'fields' , 'maps' , 'ggplot2' , 'raster' , 'sqldf' , 'rgeos' , 'rgdal' , 'sp' , 'digest' , 'ff' , 'descr' , 'SAScii' , 'stringr' , 'R.utils' , 'R.oo' , 'RCurl' , 'MonetDBLite' , 'MonetDB.R' , 'survey' , 'downloader' ) , repos=c("http://dev.monetdb.org/Assets/R/", "http://cran.rstudio.com/"))
# setwd( "S:/temp/PNAD" )
# warning: some large downloads
downloader::source_url( "https://raw.githubusercontent.com/davidbrae/swmap/4501e2c8927faaffa02c92d3e40d16beb44bca92/how%20to%20map%20the%20pesquisa%20nacional%20por%20amostra%20de%20domicilios.R" , echo = TRUE , prompt = FALSE )

and here is what happens at the point of the error. again La_rs appears corrupted.

> for ( i in 1:4 ){
+ 
+       this.krig.fit <-
+               Krig(
+                       cbind( x$x , x$y ) ,
+                       x[ , paste0( 'occcat' , i ) ] ,
+                       weights = x[ , paste0( 'weigh .... [TRUNCATED] 
Error in eigen(tempM, symmetric = TRUE) : 'a' must be a complex matrix
In addition: There were 50 or more warnings (use warnings() to see the first 50)
> traceback()
8: eigen(tempM, symmetric = TRUE)
7: Krig.engine.default(out, verbose = verbose)
6: Krig(cbind(x$x, x$y), x[, paste0("occcat", i)], weights = x[, 
       paste0("weight", i)]) at filee101515cee#676
5: eval(expr, envir, enclos)
4: eval(ei, envir)
3: withVisible(eval(ei, envir))
2: source(temp_file, ...)
1: downloader::source_url("https://raw.githubusercontent.com/davidbrae/swmap/master/how%20to%20map%20the%20pesquisa%20nacional%20por%20amostra%20de%20domicilios.R", 
       echo = T, prompt = F)
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server 2008 R2 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] tcltk     grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] fields_8.3-6      maps_3.1.0        spam_1.3-0        ggplot2_2.0.0     raster_2.5-2     
 [6] sqldf_0.4-10      RSQLite_1.0.0     gsubfn_0.6-6      proto_0.3-10      rgeos_0.3-17     
[11] rgdal_1.1-3       sp_1.2-2          digest_0.6.9      ff_2.2-13         bit_1.1-12       
[16] descr_1.1.2       SAScii_1.0        stringr_1.0.0     R.utils_2.2.0     R.oo_1.19.0      
[21] R.methodsS3_1.7.0 RCurl_1.95-4.6    bitops_1.0-6      MonetDBLite_0.2.0 MonetDB.R_1.0.1  
[26] DBI_0.3.1         survey_3.30-3     downloader_0.4   

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.3      plyr_1.8.3       tools_3.2.3      gtable_0.1.2     lattice_0.20-33 
 [6] magrittr_1.5     scales_0.3.0     codetools_0.2-14 xtable_1.8-0     colorspace_1.2-6
[11] stringi_1.0-1    munsell_0.4.2    chron_2.3-47    
> 

february 27th, 2016 edit: very similar bug, adding gc() in the middle of this script prevents the crash

# account creation page
# http://www.icpsr.umich.edu/rpxlogin?path=NACJD&request_uri=https%3a%2f%2fwww.icpsr.umich.edu%2ficpsrweb%2fNACJD%2f
your.username <- '[email protected]'
your.password <- 'some_password'

setwd( "C:/My Directory/NCVS_BUG/" )
library(downloader)
source_url( "https://gist.githubusercontent.com/ajdamico/4cd5f76aebbdaae5bc88/raw/1ae140e84aa82f1c12af297badad6d8c2c50f5a1/ncvs_bughunt.R" , echo = TRUE , prompt = FALSE )
like image 439
Anthony Damico Avatar asked Feb 17 '16 04:02

Anthony Damico


1 Answers

Wow, that error is hard to reproduce. The number of steps needed to repro is likely why you haven't had many answers.

I finally managed to get all the data downloaded and packages installed to repro, but haven't got your code (which is fairly involved) to get to the point where you indicate it fails as yet.

As per the comments I made, the error messages indicate that is that lapack is trying to execute the complex version of the functions you are using (error thrown by this line), but the type of the input variable is not a matrix, so it triggers the error. This is most likely the low level root cause.

The question you probably really want the answer to, though, is why does this happen?

I suspect that this means that the input data for one of your steps is either empty, or 1 dimensional. I will continue to try to reproduce to prove this theory.

like image 172
J Richard Snape Avatar answered Oct 16 '22 21:10

J Richard Snape