[Rcpp-devel] Segmentation fault in Rcpp::DataFrame::create when data is sufficiently long
Slava Mazur
smazur at liquidnet.com
Fri Jan 13 15:00:34 CET 2012
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).
What contribution are you talking about? Please clarify.
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[0x2ad0b1964
| 315]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1918
| 4fc]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x5
| 77)
| [0x2ad0b1985237]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1987
| bd7]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 79)
| [0x2ad0b1985139]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1986
| 942]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 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+0x3
| 2b)
| [0x2ad0b1984feb]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1985
| 90a]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b19c7
| 63e]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 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+0x3
| 2b)
| [0x2ad0b1984feb]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b198a
| bee]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x6
| b3)
| [0x2ad0b1985373]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1986
| 8ad]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 79)
| [0x2ad0b1985139]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b198a
| bee]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x6
| b3)
| [0x2ad0b1985373]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1986
| 942]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 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+0x3
| 2b)
| [0x2ad0b1984feb]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1987
| bd7]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 79)
| [0x2ad0b1985139]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so[0x2ad0b1986
| 942]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/lib/libR.so(Rf_eval+0x4
| 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+0x3
| 2b)
| [0x2ad0b1984feb]
|
| /appdata/packages/shareware/R/R-2.13.1/lib64/R/library/Rcpp/lib/libRcp
| 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<doub
| 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<doub
| 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<doub
| 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-deve
| 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
More information about the Rcpp-devel
mailing list