[R] Debugging segfault in foreach
Duncan Murdoch
murdoch.duncan at gmail.com
Tue Nov 16 13:20:00 CET 2010
On 15/11/2010 10:53 PM, Steve Lianoglou wrote:
> Hi,
>
> I'm using R-2.12 on a linux 64bit machine.
>
> When I run a chunk of code inside a foreach() %do% { ...} or %dopar%
> {...} (with doMC backend) I keep getting a segfault. Running the
> *same* code within lapply(something, function(x) ... ) doesn't result
> in any segfaults. I'll paste the output below, but I'm not sure it
> would be helpful.
>
> I'm more curious how to go about smoking out what's causing this, as
> getting back "into" the code block that is crashing is tricky inside
> the code block executed by foreach().
>
> If anybody has any suggestions on how they debug with foreach, I'd be
> happy to hear them. Setting .veborse=TRUE isn't providing anything
> informative.
>
> Anyway, I'll paste the segfault bomb below, followed by sessionInfo()
I have very little experience debugging on Linux, but presumably what
you want to do is to use a post-mortem debugger to analyze the core dump
(no idea how to do that), or run R under gdb or another debugger to
catch things at the time the segfault occurs. There's a command line
option to do that; try R --help to see it. (But it won't give you help
on gdb, you'll need other sources of info for that.)
Duncan Murdoch
>
> ======== Segfault dump ==========
>
> result of evaluating expression:
>
> *** caught segfault ***
> address 0x30, cause 'memory not mapped'
>
> Traceback:
> 1: format(x[[i]], ..., justify = justify)
> 2: format.data.frame(x, digits = digits, na.encode = FALSE)
> 3: as.matrix(format.data.frame(x, digits = digits, na.encode = FALSE))
> 4: print.data.frame(r)
> 5: print(r)
> 6: doTryCatch(return(expr), name, parentenv, handler)
> 7: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 8: tryCatchList(expr, classes, parentenv, handlers)
> 9: tryCatch({ repeat { args<- nextElem(it) if
> (obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
> print(args) } for (a in names(args)) assign(a\
> , args[[a]], pos = envir, inherits = FALSE) r<-
> tryCatch(eval(expr, envir = envir), error = function(e) e) if
> (obj$verbose) { cat("result of evaluating expression\
> :\n") print(r) }
> tryCatch(accumulator(list(r), i), error = function(e) {
> cat("error calling combine function:\n") print(e)
> NULL }) \
> i<- i + 1 }}, error = function(e) { if
> (!identical(conditionMessage(e), "StopIteration"))
> stop(simpleError(conditionMessage(e), expr))})
> 10: doSEQ(obj, substitute(ex), parent.frame())
> 11: foreach(chr = chrs, .packages = "GenomicFeaturesX", .verbose =
> TRUE) %do% { .gc<- duplicate(gcache, pre.load = NULL)
> on.exit(dispose(.gc)) cat("===", chr, "===\n") \
> apaSummary(expt, .gc, chr, pvd.policy, utr.index, polya.variants,
> gene.collapse) }
> 12: apaSummaryCrank(bpm[[1]], gcr, chrs[21:22], gene.collapse = "longest")
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
>
> ============= sessionInfo ==============
>
> R version 2.12.0 (2010-10-15)
> Platform: x86_64-unknown-linux-gnu (64-bit)
>
> locale:
> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
> [5] LC_MONETARY=C LC_MESSAGES=en_US.UTF-8
> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] grid stats graphics grDevices utils datasets methods
> [8] base
>
> other attached packages:
> [1] reshape2_1.0 ShortRead_1.8.0 lattice_0.19-13
> [4] ggplot2_0.8.8 proto_0.3-8 reshape_0.8.3
> [7] doMC_1.2.1 multicore_0.1-3 foreach_1.3.0
> [10] codetools_0.2-2 iterators_1.0.3 data.table_1.5.1
> [13] plyr_1.2.1 GenomeGraphs_1.10.0 biomaRt_2.6.0
> [16] bitops_1.0-4.1 Rsamtools_1.2.0 RSQLite_0.9-2
> [19] DBI_0.2-5 Biostrings_2.18.0 GenomicFeaturesX_0.2
> [22] GenomicFeatures_1.2.0 GenomicRanges_1.2.1 IRanges_1.8.2
>
> loaded via a namespace (and not attached):
> [1] annotate_1.28.0 AnnotationDbi_1.12.0 Biobase_2.10.0
> [4] BSgenome_1.18.0 hwriter_1.2 RCurl_1.4-3
> [7] rtracklayer_1.10.2 stringr_0.4 XML_3.2-0
> [10] xtable_1.5-6
>
> -steve
>
More information about the R-help
mailing list