On 12-05-06 7:53 AM, Duncan Murdoch wrote:
On 12-05-06 6:43 AM, Duncan Murdoch wrote:
On 12-05-05 10:39 PM, Joshua Ulrich wrote:
Hi all,
I experienced a crash in R-2.15.0 on 32-bit Windows XP (sessionInfo
below) when running the piece of code below. I cannot replicate the
error on 64-bit Linux, 64-bit Windows, or 32-bit R running under
64-bit Windows. I do not have, and could not find, a 32-bit version
of Linux to test this.
NOW<- Sys.time()
FUTURE<- NOW+1:1e7
crash<- as.character(FUTURE)
Error in unlist(unclass(x)[1L:3L]) :
promise already under evaluation: recursive default argument
reference or earlier problems?
traceback()
Error: C stack usage is too close to the limit
# evaluating an expression at this point would cause R to exit ungracefully
Here's an example that avoids a lot of unnecessary code:
L1<- list(one=1:1e6, two=1:1e6, three=1:1e6)
# no issue with smaller list elements
U1<- unlist(L1, recursive=TRUE, use.names=TRUE)
C1<- c(L1, recursive=TRUE, use.names=TRUE)
L2<- list(one=1:1e7, two=1:1e7, three=1:1e7)
# crashes after ~2min with error above
U2<- unlist(L2, recursive=TRUE, use.names=TRUE)
C2<- c(L2, recursive=TRUE, use.names=TRUE)
# no issue if use.names=FALSE
U3<- unlist(L2, recursive=TRUE, use.names=FALSE)
C3<- c(L2, recursive=TRUE, use.names=FALSE)
I took a look at do_unlist and do_c_dflt in bind.c, but I stopped at
NewExtractNames because it is a bit beyond my current understanding.
Any thoughts?
I would guess that some loop in the C code is using alloca to allocate
temporary storage on the stack, and it's running out of stack space.
I'll take a look...
I couldn't spot this anywhere. I'm not sure what's happening, except
maybe you're just running out of memory: you're trying to allocate 3e7
different names.
Yes, I think that's it. I get a similar error from this code:
one <- paste0("one", 1:1e7) # okay
two <- paste0("two", 1:1e7) # gives error
So I think the error handling should be improved somewhere in the string
allocation code ("out of memory" would be a better message!), but it
probably has nothing to do with unlist.
Duncan Murdoch
Duncan Murdoch
Duncan Murdoch
sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Please let me know if I forgot anything or if there's anything I can do to help.
Best,
--
Joshua Ulrich | FOSS Trading: www.fosstrading.com
R/Finance 2012: Applied Finance with R
www.RinFinance.com
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel