Re: [Rd] unlist crashes 32-bit R on WinXP when use.names=TRUE

From: Dirk Eddelbuettel <edd_at_debian.org>
Date: Sun, 06 May 2012 07:17:18 -0500

On 6 May 2012 at 07:53, 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.

On 32bit Linux with limited ram, it just swaps away ...

| >>> 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.

... but it is working steadily on it which an R session with more VIRT ram (per htop) than physical memory.

Dirk

|
| 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_at_r-project.org mailing list
| >> https://stat.ethz.ch/mailman/listinfo/r-devel
| >
|
| ______________________________________________
| R-devel_at_r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
R/Finance 2012 Conference on May 11 and 12, 2012 at UIC in Chicago, IL
See agenda, registration details and more at http://www.RinFinance.com

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Sun 06 May 2012 - 12:19:06 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sun 06 May 2012 - 16:30:56 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive