Skip to content

Segfault in RCppParallel on intel compiler on Linux #34

Description

@eriqande

On one of the CRAN checks for the last patch submission, Uwe Ligges noted that building the fully-bayesian vignette segfaults. It looks like it happens on rebuilding the vignette, and it might be an RcppParallel issue. Error log is below. Uwe said we might wish to resolve this before our next submission, though it is up on CRAN now.

 *** caught segfault ***
address (nil), cause 'unknown'
An irrecoverable exception occurred. R is aborting now ...
* checking for unstated dependencies in vignettes ... OK
* checking package vignettes in ‘inst/doc’ ... OK
* checking re-building of vignette outputs ... [180s/227s] ERROR
Error(s) in re-building vignettes:
--- re-building ‘rubias-fully-bayesian.Rmd’ using rmarkdown

 *** caught segfault ***
address 0x7d41257b2144, cause 'memory not mapped'

Traceback:
 1: RcppParallel::defaultNumThreads()
 2: RcppParallel::setThreadOptions(numThreads = RcppParallel::defaultNumThreads())
 3: eval(expr, envir, enclos)
 4: eval(expr, envir, enclos)
 5: eval_with_user_handlers(expr, envir, enclos, user_handlers)
 6: withVisible(eval_with_user_handlers(expr, envir, enclos, user_handlers))
 7: withCallingHandlers(withVisible(eval_with_user_handlers(expr,     envir, enclos, user_handlers)), warning = wHandler, error = eHandler,     message = mHandler)
 8: handle(ev <- withCallingHandlers(withVisible(eval_with_user_handlers(expr,     envir, enclos, user_handlers)), warning = wHandler, error = eHandler,     message = mHandler))
 9: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval_with_user_handlers(expr,     envir, enclos, user_handlers)), warning = wHandler, error = eHandler,     message = mHandler)))
10: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,     debug = debug, last = i == length(out), use_try = stop_on_error !=         2L, keep_warning = keep_warning, keep_message = keep_message,     log_echo = log_echo, log_warning = log_warning, output_handler = output_handler,     include_timing = include_timing)
11: evaluate::evaluate(...)
12: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options))
13: in_dir(input_dir(), expr)
14: in_input_dir(evaluate(code, envir = env, new_device = FALSE,     keep_warning = if (is.numeric(options$warning)) TRUE else options$warning,     keep_message = if (is.numeric(options$message)) TRUE else options$message,     stop_on_error = if (is.numeric(options$error)) options$error else {        if (options$error && options$include)             0L        else 2L    }, output_handler = knit_handlers(options$render, options)))
15: eng_r(options)
16: block_exec(params)
17: call_block(x)
18: process_group.block(group)
19: process_group(group)
20: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) if (xfun::pkg_available("rlang", "1.0.0")) rlang::entrace(e))
21: withCallingHandlers(expr, error = function(e) {    loc = paste0(current_lines(), label, sprintf(" (%s)", knit_concord$get("infile")))    message(one_string(handler(e, loc)))})
22: handle_error(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) if (xfun::pkg_available("rlang", "1.0.0")) rlang::entrace(e)),     function(e, loc) {        setwd(wd)        write_utf8(res, output %n% stdout())        paste0("\nQuitting from lines ", loc)    }, if (labels[i] != "") sprintf(" [%s]", labels[i]))
23: process_file(text, output)
24: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
25: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(),     output_dir = getwd(), ...)
26: vweave_rmarkdown(...)
27: engine$weave(file, quiet = quiet, encoding = enc)
28: doTryCatch(return(expr), name, parentenv, handler)
29: tryCatchOne(expr, names, parentenv, handlers[[1L]])
30: tryCatchList(expr, classes, parentenv, handlers)
31: tryCatch({    engine$weave(file, quiet = quiet, encoding = enc)    setwd(startdir)    output <- find_vignette_product(name, by = "weave", engine = engine)    if (!have.makefile && vignette_is_tex(output)) {        texi2pdf(file = output, clean = FALSE, quiet = quiet)        output <- find_vignette_product(name, by = "texi2pdf",             engine = engine)    }}, error = function(e) {    OK <<- FALSE    message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",         file, conditionMessage(e)))})
32: tools:::.buildOneVignette("rubias-fully-bayesian.Rmd", "/data/gannet/ripley/R/packages/tests-Intel/rubias.Rcheck/vign_test/rubias",     TRUE, FALSE, "rubias-fully-bayesian", "UTF-8", "/tmp/RtmpFpmQyS/working_dir/RtmpKvfmCA/file139e3453071947.rds")
An irrecoverable exception occurred. R is aborting now ...
--- re-building ‘rubias-overview.Rmd’ using rmarkdown
--- finished re-building ‘rubias-overview.Rmd’

--- re-building ‘rubias-underlying-data-structures.Rmd’ using rmarkdown
--- finished re-building ‘rubias-underlying-data-structures.Rmd’

SUMMARY: processing the following file failed:
  ‘rubias-fully-bayesian.Rmd’

Error: Vignette re-building failed.
Execution halted

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions