[Rcpp-devel] Segmentation fault in Rcpp::DataFrame::create when data is sufficiently long

Dirk Eddelbuettel edd at debian.org
Sun Jan 15 17:11:12 CET 2012


Hi Slava,

That is a textbook example of a nice and detailed bug report. Well done.

On 13 January 2012 at 14:19, Slava Mazur wrote:
| | Can you chase down where the segfault happens?
| In different places. Sometimes in R_gc_internal, sometimes in malloc. I've prepared an independent example so that you can try to reproduce it (below). Behavior is different but related to what I initially observed.
| 
| Steps to reproduce:
| 1. Create a skeleton package rcppdftest via Rcpp.package.skeleton.
| 2. Copy the following to rcpp_hello_world.cpp:
| #include "rcpp_hello_world.h"
| 
| struct static_init {
|         std::vector<std::string> src, type;
|         static_init() {
|                 src.push_back("AAAAAA");
|                 src.push_back("BBBBBB");
|                 src.push_back("CCCCCC");
|                 src.push_back("DDDDDD");
|                 src.push_back("EEEEEE");
|                 src.push_back("FFFFFF");
| 
|                 type.push_back("A");
|                 type.push_back("B");
|                 type.push_back("C");
|                 type.push_back("AA");
|                 type.push_back("BB");
|                 type.push_back("CC");
| 
|         }
| };
| 
| static static_init _static_init;
| 
| SEXP rcpp_hello_world(SEXP rlen) {
|     using namespace Rcpp ;
|     try {
|                 int len = Rf_isNumeric(rlen) ? as<int>(rlen) : ::atoi(as<std::string>(rlen).c_str());
| 
|                 std::vector<double> vt, vpx, vsz;
|                 std::vector<std::string> vsrc, vtype;
| 
|                 for (int i = 0; i < len; ++i) {
|                         vt.push_back(1.0 * std::rand() / RAND_MAX);
|                         vpx.push_back(10.0 * std::rand() / RAND_MAX);
|                         vsz.push_back(100.0 * std::rand() / RAND_MAX);
|                         size_t j = std::min(_static_init.src.size() * std::rand() / RAND_MAX, _static_init.src.size()-1);
|                         vsrc.push_back(_static_init.src[j]);
|                         size_t k = std::min(_static_init.type.size() * std::rand() / RAND_MAX, _static_init.type.size()-1);
|                         vtype.push_back(_static_init.type[k]);
|                 }
| 
|                 Rcpp::DataFrame df = Rcpp::DataFrame::create(
|                                 Rcpp::Named("t", vt),
|                                 Rcpp::Named("type", vtype),
|                                 Rcpp::Named("src", vsrc),
|                                 Rcpp::Named("px", vpx),
|                                 Rcpp::Named("sz", vsz)
|                 );
| 
|                 return Rcpp::wrap(df);
|         } catch(const std::exception &error) {
|                 forward_exception_to_r( error );
|         } catch(...) {
|                 ::Rf_error( "c++ exception (unknown reason)" );
|         }
|         return Rcpp::wrap(Rcpp::DataFrame());
| }
| 
| 3. Make corresponding changes to .h and .R.
| 4. Build and install.
| 5. Open R session and do the following:
| > library(rcppdftest)
| Loading required package: Rcpp
| > tmp=rcpp_hello_world(50000)
| > v=tmp$sz
| > tmp=rcpp_hello_world(50000)
| > v=c(v,tmp$sz)

That would trigger a copy-on-write, methinks, as we alter 'v'.

| > tmp=rcpp_hello_world(50000) <-- and here R session hangs forever.
| 
| When attaching with gdb, the call stack looks like the following:
| #0  0x00002b7f4a4b1594 in R_gc_internal (size_needed=0) at memory.c:1514
| #1  0x00002b7f4a4b34da in Rf_mkPROMISE (expr=0xf0dbf0f8, rho=0x904dab0) at memory.c:2165
| #2  0x00002b7f4a470e04 in Rf_promiseArgs (el=0xf0dbf0c0, rho=0x904dab0) at eval.c:1961
| #3  0x00002b7f4a479fc3 in Rf_eval (e=0xa3936a0, rho=0x904dab0) at eval.c:525
| #4  0x00002b7f4a47a90a in do_eval (call=0xa376c98, op=0x903d058, args=0xa38f2c0, rho=0xa38f100) at eval.c:2082
| #5  0x00002b7f4a4bc63e in do_internal (call=<value optimized out>, op=<value optimized out>, args=<value optimized out>, env=0xa38f100) at names.c:1227
| #6  0x00002b7f4a47a139 in Rf_eval (e=0xa376c28, rho=0xa38f100) at eval.c:482
| #7  0x00002b7f4a47e678 in Rf_applyClosure (call=0xa393780, op=0xa3786e8, arglist=0xa3914b0, rho=0xa3ea258, suppliedenv=0x904dae8) at eval.c:838
| #8  0x00002b7f4a479feb in Rf_eval (e=0xa393780, rho=0xa3ea258) at eval.c:526
| #9  0x00002b7f4a47fbee in forcePromise (e=0xa3938d0) at eval.c:331
| #10 0x00002b7f4a47a373 in Rf_eval (e=0x907a5e8, rho=0xa3939b0) at eval.c:436
| #11 0x00002b7f4a47b8ad in do_return (call=0xa37cea0, op=<value optimized out>, args=0x2b7f4a610f18, rho=0xa3939b0) at eval.c:1437
| #12 0x00002b7f4a47a139 in Rf_eval (e=0xa37cea0, rho=0xa3939b0) at eval.c:482
| #13 0x00002b7f4a47fbee in forcePromise (e=0xa3928a8) at eval.c:331
| #14 0x00002b7f4a47a373 in Rf_eval (e=0x907a5e8, rho=0xa390e58) at eval.c:436
| #15 0x00002b7f4a47b942 in do_begin (call=0xa37c848, op=0x9025d70, args=0x2b7f4a610f18, rho=0xa390e58) at eval.c:1420
| #16 0x00002b7f4a47a139 in Rf_eval (e=0xa37c848, rho=0xa390e58) at eval.c:482
| #17 0x00002b7f4a47e678 in Rf_applyClosure (call=0xa37cdf8, op=0xa393a20, arglist=0xa392918, rho=0xa3939b0, suppliedenv=0x904dae8) at eval.c:838
| #18 0x00002b7f4a479feb in Rf_eval (e=0xa37cdf8, rho=0xa3939b0) at eval.c:526
| #19 0x00002b7f4a47cbd7 in do_set (call=0xa37cd18, op=0x9025f68, args=0xa37cd50, rho=0xa3939b0) at eval.c:1722
| #20 0x00002b7f4a47a139 in Rf_eval (e=0xa37cd18, rho=0xa3939b0) at eval.c:482
| #21 0x00002b7f4a47b942 in do_begin (call=0xa3c84f8, op=0x9025d70, args=0x2b7f4a610f18, rho=0xa3939b0) at eval.c:1420
| #22 0x00002b7f4a47a139 in Rf_eval (e=0xa3c84f8, rho=0xa3939b0) at eval.c:482
| #23 0x00002b7f4a47e678 in Rf_applyClosure (call=0xa393828, op=0xa3e1940, arglist=0xa393908, rho=0xa3ea258, suppliedenv=0x904dae8) at eval.c:838
| #24 0x00002b7f4a479feb in Rf_eval (e=0xa393828, rho=0xa3ea258) at eval.c:526
| #25 0x00002b7f4f69affc in Rcpp::Evaluator::run (expr=0xa3936a0, env=0x904dab0) at Evaluator.cpp:36
| #26 0x00002b7f4f69b201 in Rcpp::Evaluator::run (expr=0xa3936a0) at Evaluator.cpp:58
| #27 0x00002b7f4f69b219 in Rcpp::internal::try_catch (expr=0xa3936a0) at Evaluator.cpp:78
| #28 0x00002b7f4f4522f8 in rcpp_hello_world (rlen=<value optimized out>)
|     at /appdata/packages/shareware/R/R-2.13.1/lib64/R/library/Rcpp/include/Rcpp/DataFrame_generated.h:70
| 
| Hope this helps.

Everything from 24 on down is plain _R_ and not Rcpp.  We just pass things
onto R and _genuine R objects_ via the SEXP interface.  So from a casual look
it seems there is little we (or you) can do here, other than a) "get more
RAM" and/or b) "use smaller objects".

Have you looked into external pointers to keep these large objects away from R?  
I had good success many years ago with pre-prelease versions of bigmemory
coupled with my own C++ code around external pointers. The Rcpp::XPtr class
makes it even easier.

FWIW, for me it even hangs on the second invocation of the function _in an
interactive session_ but when I run it via littler, it all passes:

edd at max:/tmp$ r slava.r 
Loading required package: methods
Alive 1
Alive 2
Alive 3
Alive 4
edd at max:/tmp$ 

where slava.r is essentially a simpler inline version of your suggested
package:

-----------------------------------------------------------------------------
library(inline)

inc <- '
struct static_init {
        std::vector<std::string> src, type;
        static_init() {
                src.push_back("AAAAAA");
                src.push_back("BBBBBB");
                src.push_back("CCCCCC");
                src.push_back("DDDDDD");
                src.push_back("EEEEEE");
                src.push_back("FFFFFF");

                type.push_back("A");
                type.push_back("B");
                type.push_back("C");
                type.push_back("AA");
                type.push_back("BB");
                type.push_back("CC");

        }
};

static static_init _static_init;
'

src <- '
        int len = Rf_isNumeric(rlen) ? as<int>(rlen) : ::atoi(as<std::string>(rlen).c_str());

        std::vector<double> vt, vpx, vsz;
        std::vector<std::string> vsrc, vtype;

        for (int i = 0; i < len; ++i) {
                vt.push_back(1.0 * std::rand() / RAND_MAX);
                vpx.push_back(10.0 * std::rand() / RAND_MAX);
                vsz.push_back(100.0 * std::rand() / RAND_MAX);
                size_t j = std::min(_static_init.src.size() * std::rand() / RAND_MAX, _static_init.src.size()-1);
                vsrc.push_back(_static_init.src[j]);
                size_t k = std::min(_static_init.type.size() * std::rand() / RAND_MAX, _static_init.type.size()-1);
                vtype.push_back(_static_init.type[k]);
        }

        Rcpp::DataFrame df = Rcpp::DataFrame::create(
                        Rcpp::Named("t", vt),
                        Rcpp::Named("type", vtype),
                        Rcpp::Named("src", vsrc),
                        Rcpp::Named("px", vpx),
                        Rcpp::Named("sz", vsz)
        );

        return Rcpp::wrap(df);
'

fun <- cxxfunction(signature(rlen="integer"), body=src, include=inc, plugin="Rcpp")


tmp <- fun(50000)
v <- tmp$sz
cat("Alive 1\n")
tmp <- fun(50000)
v <- c(v,tmp$sz)
cat("Alive 2\n")
tmp <- fun(50000)
v <- tmp$sz
cat("Alive 3\n")
tmp <- fun(50000)
v <- c(v,tmp$sz)
cat("Alive 4\n")
-----------------------------------------------------------------------------

Maybe this is something we need to take to R-devel.  

Comments, anyone?

Dirk


 
| Thanks,
| 
| Slava Mazur
| -----Original Message-----
| From: Dirk Eddelbuettel [mailto:edd at debian.org]
| Sent: Friday, January 13, 2012 10:29 AM
| To: Slava Mazur
| Cc: Dirk Eddelbuettel; rcpp-devel at lists.r-forge.r-project.org
| Subject: RE: [Rcpp-devel] Segmentation fault in Rcpp::DataFrame::create when data is sufficiently long
| 
| 
| On 13 January 2012 at 09:00, Slava Mazur wrote:
| | Dirk,
| |
| | As expected, switching to std::vector did not make any difference. The following leads to the same behavior:
| |
| | std::vector<double> vt, vpx, vsz;
| | std::vector<std::string> vsrc, vtype;
| |
| | // ... initializing the above vectors here
| |
| | Rcpp::DataFrame df = Rcpp::DataFrame::create(
| |       Rcpp::Named("t", vt),
| |       Rcpp::Named("type", vtype),
| |       Rcpp::Named("src", vsrc),
| |       Rcpp::Named("px", vpx),
| |       Rcpp::Named("sz", vsz)
| | );
| |
| | return Rcpp::wrap(df);
| |
| | It crashes inside the "create" function when the vector size is about 100K. Note that I was able to create a similar data frame of even much bigger size in R directly (without Rcpp).
| 
| Can you chase down where the segfault happens?
| 
| | What contribution are you talking about? Please clarify.
| 
| Feel free to quote. I wrote
| 
| | There is simply no wrap() support for Boost.  Care to contribute it?
| 
| and the Rcpp-extending vignette details how to extend as<>() and wrap() to different classes.  I was of course speaking half jokingly as Boost is no small feat---but it would be nice to have Boost support!  Someone's gotta do it though.
| 
| Fixing the bug may be more important. If you can help there, we would appreciate it.
| 
| Cheers, Dirk
| 
| |
| | Thanks,
| |
| | Slava Mazur
| |
| | -----Original Message-----
| | From: Dirk Eddelbuettel [mailto:edd at debian.org]
| | Sent: Thursday, January 12, 2012 4:19 PM
| | To: Slava Mazur
| | Cc: rcpp-devel at lists.r-forge.r-project.org
| | Subject: Re: [Rcpp-devel] Segmentation fault in
| | Rcpp::DataFrame::create when data is sufficiently long
| |
| |
| | On 12 January 2012 at 16:00, Slava Mazur wrote:
| | | Greetings,
| | |
| | |
| | |
| | | My R session crashes with core dump when executing the following Rcpp call:
| | |
| | |
| | |
| | | DataFrame df = Rcpp::DataFrame::create(
| | |
| | |                 Rcpp::Named("t",
| | | boost::make_iterator_range(projector_num(vb,
| | | get_time), projector_num(ve, get_time))),
| | |
| | |                 Rcpp::Named("type",
| | | boost::make_iterator_range(projector_str
| | | (vb, get_type), projector_str(ve, get_type))),
| | |
| | |                 Rcpp::Named("src",
| | | boost::make_iterator_range(projector_str(vb,
| | | get_src), projector_str(ve, get_src))),
| | |
| | |                 Rcpp::Named("px",
| | | boost::make_iterator_range(projector_num(vb,
| | | get_price), projector_num(ve, get_price))),
| | |
| | |                 Rcpp::Named("sz",
| | | boost::make_iterator_range(projector_num(vb,
| | | get_size), projector_num(ve, get_size))),
| | |
| | |                 Rcpp::Named("stringsAsFactors", false)
| | |
| | | );
| | |
| | |
| | |
| | | Below is what is on the screen and a fragment of call stack. Any
| | | ideas what?s wrong here?
| |
| | I'd start by disentangling this.  Start with one object.  Assign it from a Boost type a standard STL type _for which we have wrap() support_ and stick that in a data.frame.
| |
| | There is simply no wrap() support for Boost.  Care to contribute it?
| |
| | Dirk
| |
| | |
| | |
| | | Thanks,
| | |
| | |
| | |
| | | Slava Mazur
| | |
| | |
| | |
| | | *** glibc detected ***
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/bin/exec/
| | | R: corrupted double-linked list: 0x000000001bdd22b0 ***
| | |
| | | ======= Backtrace: =========
| | |
| | | /lib64/libc.so.6[0x3633073afa]
| | |
| | | /lib64/libc.so.6(__libc_malloc+0x6e)[0x3633074bee]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so
| | | (Rf_allocVector+0x613)[0x2ad0b19bf033]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 64
| | | 315]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 18
| | | 4fc]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x5
| | | 77)
| | | [0x2ad0b1985237]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 87
| | | bd7]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 86
| | | 942]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so
| | | (Rf_applyClosure+0x308)[0x2ad0b1989678]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x3
| | | 2b)
| | | [0x2ad0b1984feb]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 85
| | | 90a]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | c7
| | | 63e]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so
| | | (Rf_applyClosure+0x308)[0x2ad0b1989678]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x3
| | | 2b)
| | | [0x2ad0b1984feb]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 8a
| | | bee]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x6
| | | b3)
| | | [0x2ad0b1985373]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 86
| | | 8ad]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 8a
| | | bee]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x6
| | | b3)
| | | [0x2ad0b1985373]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 86
| | | 942]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so
| | | (Rf_applyClosure+0x308)[0x2ad0b1989678]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x3
| | | 2b)
| | | [0x2ad0b1984feb]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 87
| | | bd7]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19
| | | 86
| | | 942]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x4
| | | 79)
| | | [0x2ad0b1985139]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so
| | | (Rf_applyClosure+0x308)[0x2ad0b1989678]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0
| | | x3
| | | 2b)
| | | [0x2ad0b1984feb]
| | |
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/library/Rcpp/lib/libR
| | | cp p.so (_ZN4Rcpp9Evaluator3runEP7SEXPRECS2_+0x54)[0x2ad0b9a49594]
| | |
| | | ?
| | |
| | |
| | |
| | | #0  0x0000003633030265 in raise (sig=<value optimized out>) at
| | | ../nptl/sysdeps/
| | | unix/sysv/linux/raise.c:64
| | |
| | | #1  0x0000003633031d10 in abort () at abort.c:88
| | |
| | | #2  0x000000363306a84b in __libc_message (do_abort=<value optimized
| | | out>, fmt= <value optimized out>)
| | |
| | |     at ../sysdeps/unix/sysv/linux/libc_fatal.c:170
| | |
| | | #3  0x0000003633073afa in _int_malloc (av=<value optimized out>,
| | | bytes=<value optimized out>)
| | |
| | |     at malloc.c:6180
| | |
| | | #4  0x0000003633074bee in __libc_malloc (bytes=<value optimized
| | | out>) at
| | | malloc.c:3605
| | |
| | | #5  0x00002ad0b19bf033 in Rf_allocVector (type=14, length=37312) at
| | | memory.c:2345
| | |
| | | #6  0x00002ad0b1964315 in duplicate1 (s=0x1c5d7cd0) at
| | | duplicate.c:224
| | |
| | | #7  0x00002ad0b19184fc in do_makelist (call=<value optimized out>,
| | | op=<value optimized out>,
| | |
| | |     args=<value optimized out>, rho=<value optimized out>) at
| | | builtin.c:673
| | |
| | | #8  0x00002ad0b1985237 in Rf_eval (e=0x1ac31068, rho=0x1bb84fe0) at
| | | eval.c:511
| | |
| | | #9  0x00002ad0b1987bd7 in do_set (call=0x1ac31110, op=0x19d7bf68,
| | | args= 0x1ac310d8, rho=0x1bb84fe0)
| | |
| | |     at eval.c:1722
| | |
| | | #10 0x00002ad0b1985139 in Rf_eval (e=0x1ac31110, rho=0x1bb84fe0) at
| | | eval.c:482
| | |
| | | #11 0x00002ad0b1986942 in do_begin (call=0x1ac2ee08, op=0x19d7bd70,
| | | args=0x6,
| | | rho=0x1bb84fe0) at eval.c:1420
| | |
| | | #12 0x00002ad0b1985139 in Rf_eval (e=0x1ac2ee08, rho=0x1bb84fe0) at
| | | eval.c:482
| | |
| | | #13 0x00002ad0b1989678 in Rf_applyClosure (call=0x1bb95588,
| | | op=0x1ac283f8, arglist=0x1bb85960,
| | |
| | |     rho=0x19da3ab0, suppliedenv=0x19da3ae8) at eval.c:838
| | |
| | | #14 0x00002ad0b1984feb in Rf_eval (e=0x1bb95588, rho=0x19da3ab0) at
| | | eval.c:526
| | |
| | | #15 0x00002ad0b198590a in do_eval (call=0x1b269200, op=0x19d93058,
| | | args= 0x1bb857d8, rho=0x1bb86580)
| | |
| | |     at eval.c:2082
| | |
| | | #16 0x00002ad0b19c763e in do_internal (call=<value optimized out>,
| | | op=<value optimized out>,
| | |
| | |     args=<value optimized out>, env=0x1bb86580) at names.c:1227
| | |
| | | #17 0x00002ad0b1985139 in Rf_eval (e=0x1b269190, rho=0x1bb86580) at
| | | eval.c:482
| | |
| | | #18 0x00002ad0b1989678 in Rf_applyClosure (call=0x1bb89920,
| | | op=0x1b272da8, arglist=0x1bb86430,
| | |
| | |     rho=0x1a6a11d8, suppliedenv=0x19da3ae8) at eval.c:838
| | |
| | | #19 0x00002ad0b1984feb in Rf_eval (e=0x1bb89920, rho=0x1a6a11d8) at
| | | eval.c:526
| | |
| | | #20 0x00002ad0b198abee in forcePromise (e=0x1bb89c68) at eval.c:331
| | |
| | | #21 0x00002ad0b1985373 in Rf_eval (e=0x19dd05e8, rho=0x1bb88620) at
| | | eval.c:436
| | |
| | | #22 0x00002ad0b19868ad in do_return (call=0x1b2a2368, op=<value
| | | optimized out>, args=0x6, rho=0x1bb88620)
| | |
| | |     at eval.c:1437
| | |
| | | #23 0x00002ad0b1985139 in Rf_eval (e=0x1b2a2368, rho=0x1bb88620) at
| | | eval.c:482
| | |
| | | #24 0x00002ad0b198abee in forcePromise (e=0x1bb88c78) at eval.c:331
| | |
| | | #25 0x00002ad0b1985373 in Rf_eval (e=0x19dd05e8, rho=0x1bb86a68) at
| | | eval.c:436
| | |
| | | #26 0x00002ad0b1986942 in do_begin (call=0x1b2ac708, op=0x19d7bd70,
| | | args=0x6,
| | | rho=0x1bb86a68) at eval.c:1420
| | |
| | | #27 0x00002ad0b1985139 in Rf_eval (e=0x1b2ac708, rho=0x1bb86a68) at
| | | eval.c:482
| | |
| | | #28 0x00002ad0b1989678 in Rf_applyClosure (call=0x1b2a22f8,
| | | op=0x1bb886c8, arglist=0x1bb87f08,
| | |
| | |     rho=0x1bb88620, suppliedenv=0x19da3ae8) at eval.c:838
| | |
| | | #29 0x00002ad0b1984feb in Rf_eval (e=0x1b2a22f8, rho=0x1bb88620) at
| | | eval.c:526
| | |
| | | #30 0x00002ad0b1987bd7 in do_set (call=0x1b2a2218, op=0x19d7bf68,
| | | args= 0x1b2a2288, rho=0x1bb88620)
| | |
| | |     at eval.c:1722
| | |
| | | #31 0x00002ad0b1985139 in Rf_eval (e=0x1b2a2218, rho=0x1bb88620) at
| | | eval.c:482
| | |
| | | #32 0x00002ad0b1986942 in do_begin (call=0x1b2b1d30, op=0x19d7bd70,
| | | args=0x6,
| | | rho=0x1bb88620) at eval.c:1420
| | |
| | | #33 0x00002ad0b1985139 in Rf_eval (e=0x1b2b1d30, rho=0x1bb88620) at
| | | eval.c:482
| | |
| | | #34 0x00002ad0b1989678 in Rf_applyClosure (call=0x1bb89b88,
| | | op=0x1b2b2e38, arglist=0x1bb88578,
| | |
| | | ---Type <return> to continue, or q <return> to quit---
| | |
| | |     rho=0x1a6a11d8, suppliedenv=0x19da3ae8) at eval.c:838
| | |
| | | #35 0x00002ad0b1984feb in Rf_eval (e=0x1bb89b88, rho=0x1a6a11d8) at
| | | eval.c:526
| | |
| | | #36 0x00002ad0b9a49594 in Rcpp::Evaluator::run (expr=0x1bb95588,
| | | env=<value optimized out>)
| | |
| | |     at Evaluator.cpp:36
| | |
| | | #37 0x00002ad0b941de55 in create<Rcpp::traits::named_object
| | | <boost::iterator_range<boost::transform_iterator<boost::function1<do
| | | ub
| | | le, const <unnamed>::MyTick&>,
| | | __gnu_cxx::__normal_iterator<const<unnamed>::MyTick*,
| | | std::vector<<unnamed>::MyTick, std::allocator<<unnamed>::MyTick> >
| | | >, boost::use_default, boost::use_default> > >,
| | | Rcpp::traits::named_object
| | | <boost::iterator_range<boost::transform_iterator<boost::function1
| | | <std::basic_string<char, std::char_traits<char>,
| | | std::allocator<char>
| | | >, const <unnamed>::MyTick&>,
| | | __gnu_cxx::__normal_iterator<const<unnamed>::MyTick*,
| | | std::vector<<unnamed>::MyTick, std::allocator<<unnamed>::MyTick> >
| | | >, boost::use_default, boost::use_default> > >,
| | | Rcpp::traits::named_object
| | | <boost::iterator_range<boost::transform_iterator<boost::function1
| | | <std::basic_string<char, std::char_traits<char>,
| | | std::allocator<char>
| | | >, const <unnamed>::MyTick&>,
| | | __gnu_cxx::__normal_iterator<const<unnamed>::MyTick*,
| | | std::vector<<unnamed>::MyTick, std::allocator<<unnamed>::MyTick> >
| | | >, boost::use_default, boost::use_default> > >,
| | | Rcpp::traits::named_object
| | | <boost::iterator_range<boost::transform_iterator<boost::function1<do
| | | ub
| | | le, const <unnamed>::MyTick&>,
| | | __gnu_cxx::__normal_iterator<const<unnamed>::MyTick*,
| | | std::vector<<unnamed>::MyTick, std::allocator<<unnamed>::MyTick> >
| | | >, boost::use_default, boost::use_default> > >,
| | | Rcpp::traits::named_object
| | | <boost::iterator_range<boost::transform_iterator<boost::function1<do
| | | ub
| | | le, const <unnamed>::MyTick&>,
| | | __gnu_cxx::__normal_iterator<const<unnamed>::MyTick*,
| | | std::vector<<unnamed>::MyTick, std::allocator<<unnamed>::MyTick> >
| | | >, boost::use_default, boost::use_default> > >,
| | | Rcpp::traits::named_object<bool> > (t1=@0x7fff460545c0,
| | | t2=@0x7fff460544b0, t3=@0x7fff460543a0, t4= @0x7fff46054290,
| | |
| | |     t5=@0x7fff46054180, t6=@0x7fff46054150)
| | |
| | |     at
| | | /appdata/packages/shareware/R/R-2.13.1/lib64/R/library/Rcpp/include/
| | | Rc
| | | pp
| | | /DataFrame_generated.h:87
| | |
| | |
| | |
| | |
| | | --------------------------------------------------------------------
| | | -- _______________________________________________
| | | Rcpp-devel mailing list
| | | Rcpp-devel at lists.r-forge.r-project.org
| | | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-de
| | | ve
| | | l
| | --
| | "Outside of a dog, a book is a man's best friend. Inside of a dog, it
| | is too dark to read." -- Groucho Marx
| |
| |
| 
| --
| "Outside of a dog, a book is a man's best friend. Inside of a dog, it is too dark to read." -- Groucho Marx
| 
| 

-- 
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx


More information about the Rcpp-devel mailing list