问题
I'm loading a built-in ideogram from the biovizBase package:
data("hg19Ideogram", package = "biovizBase")
The actual object is fine when inspected with str
:
> hg19Ideogram %>% str
Formal class 'GRanges' [package "GenomicRanges"] with 6 slots
..@ seqnames :Formal class 'Rle' [package "IRanges"] with 4 slots
.. .. ..@ values : Factor w/ 93 levels "chr1","chr1_gl000191_random",..: 1 2 3 4 5 6 7 8 9 10 ...
.. .. ..@ lengths : int [1:93] 1 1 1 1 1 1 1 1 1 1 ...
.. .. ..@ elementMetadata: NULL
.. .. ..@ metadata : list()
..@ ranges :Formal class 'IRanges' [package "IRanges"] with 6 slots
.. .. ..@ start : int [1:93] 1 1 1 1 1 1 1 1 1 1 ...
.. .. ..@ width : int [1:93] 249250621 106433 547496 243199373 198022430 191154276 590426 189789 191469 180915260 ...
.. .. ..@ NAMES : NULL
.. .. ..@ elementType : chr "integer"
.. .. ..@ elementMetadata: NULL
.. .. ..@ metadata : list()
..@ strand :Formal class 'Rle' [package "IRanges"] with 4 slots
.. .. ..@ values : Factor w/ 3 levels "+","-","*": 3
.. .. ..@ lengths : int 93
.. .. ..@ elementMetadata: NULL
.. .. ..@ metadata : list()
..@ elementMetadata:Formal class 'DataFrame' [package "IRanges"] with 6 slots
.. .. ..@ rownames : NULL
.. .. ..@ nrows : int 93
.. .. ..@ listData : Named list()
.. .. ..@ elementType : chr "ANY"
.. .. ..@ elementMetadata: NULL
.. .. ..@ metadata : list()
..@ seqinfo :Formal class 'Seqinfo' [package "GenomicRanges"] with 4 slots
.. .. ..@ seqnames : chr [1:93] "chr1" "chr1_gl000191_random" "chr1_gl000192_random" "chr2" ...
.. .. ..@ seqlengths : int [1:93] 249250621 106433 547496 243199373 198022430 191154276 590426 189789 191469 180915260 ...
.. .. ..@ is_circular: logi [1:93] NA NA NA NA NA NA ...
.. .. ..@ genome : chr [1:93] "hg19" "hg19" "hg19" "hg19" ...
..@ metadata : list()
But printing it results in an error:
> hg19Ideogram
GRanges object with 93 ranges and 0 metadata columns:
Error: C stack usage 7969604 is too close to the limit
Printing any of the sub-objects results in no errors (including the IRanges
), so it seems the error is with the print call to the GRanges
in particular.
Furthermore, trying to use it with ggbio results in the same error:
> ggplot() +
+ layout_circle(hg19Ideogram)
Error: C stack usage 7969268 is too close to the limit
There are a number of other questions about this error:
- Error: C stack usage is too close to the limit
- Error: C stack usage 24324761 is too close to the limit
- dendrapply Error: C stack usage is too close to the limit
- Erorr: C stack usage is too close to the limit in R
none of which provided a solution that worked for me.
Cstack
> Cstack_info()
size current direction eval_depth
7969177 16048 1 2
Versions
One person suggested updating software to fix the problem. I updated to latest version of R, RStudio and ggbio (and related packages), but it did not change anything.
> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04 LTS
Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
[6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats4 parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] GenomicRanges_1.28.4 GenomeInfoDb_1.12.2 IRanges_2.10.2 S4Vectors_0.14.3 biovizBase_1.24.0 ggbio_1.24.1
[7] BiocGenerics_0.22.0 dplyr_0.7.1 purrr_0.2.2.2 readr_1.1.1 tidyr_0.6.3 tibble_1.3.3
[13] ggplot2_2.2.1 tidyverse_1.1.1 psych_1.7.5 pacman_0.4.6
loaded via a namespace (and not attached):
[1] colorspace_1.3-2 htmlTable_1.9 XVector_0.16.0 base64enc_0.1-3
[5] dichromat_2.0-0 bit64_0.9-7 interactiveDisplayBase_1.14.0 AnnotationDbi_1.38.1
[9] lubridate_1.6.0 xml2_1.1.1 splines_3.4.1 mnormt_1.5-5
[13] knitr_1.16 Formula_1.2-1 jsonlite_1.5 Rsamtools_1.28.0
[17] broom_0.4.2 cluster_2.0.3 graph_1.54.0 shiny_1.0.3
[21] compiler_3.4.1 httr_1.2.1 backports_1.1.0 assertthat_0.2.0
[25] Matrix_1.2-3 lazyeval_0.2.0 acepack_1.4.1 htmltools_0.3.6
[29] tools_3.4.1 bindrcpp_0.2 gtable_0.2.0 glue_1.1.1
[33] GenomeInfoDbData_0.99.0 reshape2_1.4.2 Rcpp_0.12.11 Biobase_2.36.2
[37] cellranger_1.1.0 Biostrings_2.44.1 nlme_3.1-124 rtracklayer_1.36.4
[41] stringr_1.2.0 rvest_0.3.2 mime_0.5 ensembldb_2.0.3
[45] XML_3.98-1.9 AnnotationHub_2.8.2 zlibbioc_1.22.0 scales_0.4.1
[49] BSgenome_1.44.0 VariantAnnotation_1.22.3 BiocInstaller_1.26.0 hms_0.3
[53] ProtGenerics_1.8.0 SummarizedExperiment_1.6.3 RBGL_1.52.0 AnnotationFilter_1.0.0
[57] RColorBrewer_1.1-2 yaml_2.1.14 curl_2.7 memoise_1.1.0
[61] gridExtra_2.2.1 biomaRt_2.32.1 rpart_4.1-10 reshape_0.8.6
[65] latticeExtra_0.6-28 stringi_1.1.5 RSQLite_2.0 checkmate_1.8.2
[69] GenomicFeatures_1.28.4 BiocParallel_1.10.1 rlang_0.1.1 pkgconfig_2.0.1
[73] matrixStats_0.52.2 bitops_1.0-6 lattice_0.20-33 bindr_0.1
[77] GenomicAlignments_1.12.1 htmlwidgets_0.8 bit_1.1-12 GGally_1.3.1
[81] plyr_1.8.4 magrittr_1.5 R6_2.2.2 Hmisc_4.0-3
[85] DelayedArray_0.2.7 DBI_0.7 haven_1.0.0 foreign_0.8-66
[89] survival_2.41-3 RCurl_1.95-4.8 nnet_7.3-12 modelr_0.1.0
[93] OrganismDbi_1.18.0 grid_3.4.1 readxl_1.0.0 data.table_1.10.4
[97] blob_1.1.0 forcats_0.2.0 digest_0.6.12 xtable_1.8-2
[101] httpuv_1.3.5 munsell_0.4.3
ulimit
One person suggested using ulimit
. This works, but it's not clear how to accomplish this from within RStudio.
mint@hp ~ $ ulimit -s
8192
mint@hp ~ $ ulimit -s unlimited
mint@hp ~ $ R --slave -e 'Cstack_info()["size"]'
size
NA
It's not because the computer does not have enough memory available (16GB).
RAppArmor
One person suggested to use RAppArmor to increase the limit from within R. However, the function no longer exists. But looking at the limit, there doesn't seem to be any problem.
> rlimit_as();
$hardlim
[1] 1.844674e+19
$softlim
[1] 1.844674e+19
ulimit from within RStudio
In the comments Yuval Ben-Arie suggested trying ulimit
from within RStudio. I tried this both using RStudio's terminal and using system
from R to run a system command. Neither affected the actual R session, nor after restarting R.
I ran out of things to try.
回答1:
It turned out to be due to some outdated packages. I did not notice that they were not updated because RStudio's 'update packages functionality' ignores packages one does not have write permission to (thus not informing you they are outdated at all). Thus, it turned out to be due a subtle permissions problem see. See this answer.
回答2:
The stack memory of each process is limited not only by available memory but also by OS (by default no more than a few MiBs).
I didn't understand whether ulimit -s unlimited did the trick or not. what does "it's not clear how to accomplish this from without RStudio" mean?
来源:https://stackoverflow.com/questions/45225966/genomicranges-c-stack-usage-is-too-close-to-the-limit