2

Sometimes,my R instance is silently dying.I am using foreach for parallel processing.I am using 16core and 64GB ram machine.I am using following code to execute foreach.

cl <- makeCluster(6,outfile=mkclog);
registerDoParallel(cl, cores = detectCores())
ex <- Filter(function(x) is.function(get(x, .GlobalEnv)), ls(.GlobalEnv))
clusterExport(cl, ex)
foreach(l=1:nrow(ISDD),.combine=c,.packages=c("stringr","DBI","rJava","aspace","Hmisc","xts","log4r","codetools","lattice","Rcpp","plyr","memoise","digest","zoo","RMySQL","lubridate","foreach","parallel","doParallel","RJDBC")) %dopar%
{foreachfun(i,l,IDS,LIDS,LFLAG,RFlag,logger,SExp,Fflag,ISDD,EXPALL);}

I found the below Error in "mkclog" log file.I found the same error at Error calling serialize R function and https://github.com/stan-dev/rstan/issues/243. Worker died leads to quitting existing R session. Is there any solution?

23: foreachfun(i, l,IDS, LIDS, LFLAG, RFlag, logger, SExp,     Fflag, ISDD, EXPALL)
24: eval(expr, envir, enclos)
25: eval(.doSnowGlobals$expr, envir = .doSnowGlobals$exportenv)
26: doTryCatch(return(expr), name, parentenv, handler)
27: tryCatchOne(expr, names, parentenv, handlers[[1L]])
28: tryCatchList(expr, classes, parentenv, handlers)
29: tryCatch(eval(.doSnowGlobals$expr, envir = .doSnowGlobals$exportenv),     error = function(e) e)
30: (function (args) {    lapply(names(args), function(n) assign(n, args[[n]], pos = .doSnowGlobals$exportenv))    tryCatch(eval(.doSnowGlobals$expr, envir = .doSnowGlobals$exportenv),         error = function(e) e)})(quote(list(l = 8L)))
31: do.call(msg$data$fun, msg$data$args, quote = TRUE)
32: doTryCatch(return(expr), name, parentenv, handler)
33: tryCatchOne(expr, names, parentenv, handlers[[1L]])
34: tryCatchList(expr, classes, parentenv, handlers)
35: tryCatch(do.call(msg$data$fun, msg$data$args, quote = TRUE),     error = handler)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({    msg <- recvData(master)    if (msg$type == "DONE") {        closeNode(master)        break    }    else if (msg$type == "EXEC") {        success <- TRUE        handler <- function(e) {            success <<- FALSE            structure(conditionMessage(e), class = c("snow-try-error",                 "try-error"))        }        t1 <- proc.time()        value <- tryCatch(do.call(msg$data$fun, msg$data$args,             quote = TRUE), error = handler)        t2 <- proc.time()        value <- list(type = "VALUE", value = value, success = success,             time = t2 - t1, tag = msg$data$tag)        sendData(master, value)    }}, interrupt = function(e) NULL)
40: slaveLoop(makeSOCKmaster(master, port, timeout, useXDR))
41: parallel:::.slaveRSOCK()
aborting ...
Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted
Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted
Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted

I have suspect on 30: (function (args) { lapply(names(args), function(n) assign(n, args[[n]], pos = .doSnowGlobals$exportenv)) tryCatch(eval(.doSnowGlobals$expr, envir = .doSnowGlobals$exportenv), error = function(e) e)})(quote(list(l = 8L)))

Community
  • 1
  • 1
Aashu
  • 1,247
  • 1
  • 26
  • 41

0 Answers0