Miguel Esteva
2024-May-03 00:42 UTC
[R] grDevices segfault when building R4.4.0 on RHEL 9.1.
Hi all, I seem to be getting segfaults when attempting to build R 4.4.0 on RHEL 9.1 (5.14.0-162.23.1.el9_1.x86_64). Interestingly, it seems to build ok on Rocky 9.1 and 9.3. This is the trace: make[3]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' building package 'grDevices' make[4]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' all.R is unchanged make[4]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' make[4]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' make[5]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src' make[6]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src' ../../../../library/grDevices/libs/grDevices.so is unchanged make[7]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[8]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[9]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[9]: 'cairo.so' is up to date. make[9]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[8]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[7]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src/cairo' make[6]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src' make[5]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices/src' make[4]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' make[4]: Entering directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' byte-compiling package 'grDevices' *** caught segfault *** address 0x1801fa8f70, cause 'memory not mapped' Traceback: 1: solve.default(rgb) 2: solve(rgb) 3: drop(whitexyz %*% solve(rgb)) 4: make.rgb(red = c(0.625, 0.34), green = c(0.28, 0.595), blue = c(0.155, 0.07), gamma = 1.8, white = "D65", name = "Apple RGB") 5: eval(exprs[i], envir) 6: eval(exprs[i], envir) 7: sys.source(codeFile, env, keep.source = keep.source, keep.parse.data = keep.parse.data) 8: doTryCatch(return(expr), name, parentenv, handler) 9: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 10: tryCatchList(expr, classes, parentenv, handlers) 11: tryCatch(expr, error = function(e) { call <- conditionCall(e) if (!is.null(call)) { if (identical(call[[1L]], quote(doTryCatch))) call <- sys.call(-4L) dcall <- deparse(call, nlines = 1L) prefix <- paste("Error in", dcall, ": ") LONG <- 75L sm <- strsplit(conditionMessage(e), "\n")[[1L]] w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w") if (is.na(w)) w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], type = "b") if (w > LONG) prefix <- paste0(prefix, "\n ") } else prefix <- "Error : " msg <- paste0(prefix, conditionMessage(e), "\n") .Internal(seterrmessage(msg[1L])) if (!silent && isTRUE(getOption("show.error.messages"))) { cat(msg, file = outFile) .Internal(printDeferredWarnings()) } invisible(structure(msg, class = "try-error", condition = e))}) 12: try(sys.source(codeFile, env, keep.source = keep.source, keep.parse.data = keep.parse.data)) 13: loadNamespace(package = package, lib.loc = lib.loc, keep.source = keep.source, keep.parse.data = keep.parse.data, partial = TRUE) 14: withCallingHandlers(expr, packageStartupMessage = function(c) tryInvokeRestart("muffleMessage")) 15: suppressPackageStartupMessages(loadNamespace(package = package, lib.loc = lib.loc, keep.source = keep.source, keep.parse.data = keep.parse.data, partial = TRUE)) 16: code2LazyLoadDB(package, lib.loc = lib.loc, keep.source = keep.source, keep.parse.data = keep.parse.data, compress = compress, set.install.dir = set.install.dir) 17: tools:::makeLazyLoading("grDevices") An irrecoverable exception occurred. R is aborting now ... make[4]: *** [../../../share/make/lazycomp.mk:9: ../../../library/grDevices/R/grDevices.rdb] Error 139 make[4]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' make[3]: *** [Makefile:28: all] Error 2 make[3]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library/grDevices' make[2]: *** [Makefile:39: R] Error 1 make[2]: Leaving directory '/home/esteva.m/R/R-4.4.0/src/library' make[1]: *** [Makefile:28: R] Error 1 make[1]: Leaving directory '/home/esteva.m/R/R-4.4.0/src' make: *** [Makefile:62: R] Error 1 Has anyone run into this? cairo-1.17.4-7.el9.x86_64 cairo-gobject-1.17.4-7.el9.x86_64 cairo-devel-1.17.4-7.el9.x86_64 cairo-gobject-devel-1.17.4-7.el9.x86_64 pango-1.48.7-3.el9.x86_64 pango-devel-1.48.7-3.el9.x86_64 Cheers, Miguel Esteva [WEHI Logo] Walter and Eliza Hall Institute of Medical Research 1G Royal Parade Parkville Victoria 3052 Australia www.wehi.edu.au<https://wehi.edu.au> Twitter<https://twitter.com/WEHI_research> | Facebook<https://www.facebook.com/WEHIresearch/> | Instagram<https://www.instagram.com/wehi_research> | Youtube<https://www.youtube.com/user/WEHImovies> | LinkedIn<https://www.linkedin.com/company/wehi_research> WEHI acknowledges the Wurundjeri people of the Kulin Nation as the traditional owners of the land where our campuses are located and the continuing connection to country and community. Private and confidential The content of this e-mail and any attachments may be private and confidential, intended only for use of the individual or entity named. If you are not the intended recipient of this message you must not read, forward, print, copy, disclose, use or store in any way the information this e-mail or any attachment contains. If you are not the intended recipient, please notify the sender immediately and delete or destroy all copies of this e-mail and any attachment. [[alternative HTML version deleted]]
Ivan Krylov
2024-May-03 11:40 UTC
[R] grDevices segfault when building R4.4.0 on RHEL 9.1.
Dear Miguel Esteva, I couldn't get a Red Hat "ubi9" container to install enough dependencies to build R. Is there a way to reproduce your setup on a virtual machine somewhere? On Fri, 3 May 2024 00:42:43 +0000 Miguel Esteva via R-help <r-help at r-project.org> wrote:> *** caught segfault *** > > address 0x1801fa8f70, cause 'memory not mapped' > > > Traceback: > > 1: solve.default(rgb)This seems to crash inside the BLAS. Which BLAS are you using? Any custom ./configure arguments? Which compilers are you running? To find out more information about the crash, try to follow it with a debugger. Change directory to src/library/grDevices and run: _R_COMPILE_PKGS_=1 R_COMPILER_SUPPRESS_ALL=1 \ R_DEFAULT_PACKAGES=NULL LC_ALL=C \ ../../../bin/R -d gdb --vanilla --no-echo -e \ 'tools:::makeLazyLoading("grDevices")' (This assumes building straight from the source directory. Adjust the paths if you're using a separate build directory.) Use the "run" command to start the process. One you see a crash, use "backtrace" to see the state of the call stack at the place of the crash, or "backtrace full" to include the contents of local variables. The first few entries are probably the most important ones. Not sure what to do with this information yet, but it might provide more clues. -- Best regards, Ivan