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

Slava Mazur smazur at liquidnet.com
Fri Jan 13 20:19:31 CET 2012


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

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




More information about the Rcpp-devel mailing list