One package (guitar) that happens to use Rcpp started breaking recently without any change to its own code as follows:
> install.packages("guitar",,"http://rforge.net") > library(guitar) > Repository$new(".") terminate called after throwing an instance of 'Rcpp::not_compatible' what(): expecting an external pointer Aborted (core dumped) Stack trace below - it is happening in Module.cpp class__newInstance(). The method being called is simply a static constructor: class Repository: public CPPWrapperObjectTraits<Repository, git_repository> { public: explicit Repository(std::string path); First, I wouldn't expect an abort - ideally if anything is wrong it should just raise an R error (aborts are much harder to trace - in particular since the original issue was deep in a chain of several packages so R traceback would be helpful). Second, XPtr gets called with R_NilValue inside class__newInstance() but I have no idea why since the Repository object looks legit: > Repository C++ class 'Repository' <0x7f934961be60> Constructors: Repository(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) Fields: No public fields exposed by this class Methods: SEXP commits(SEXP) [...] Note that it aborts even before the constructor is called so no code from the Repository object is actually involved here - it's inside Rcpp. I have inherited the code (so please no flames, I just have to fix it ;)), so any leads as to why it now breaks while it used to work just fine would be highly appreciated. The sources are at https://github.com/s-u/guitar and the above fails both on Ubuntu and OS X (tested with R 3.2.2 and Rcpp 0.12.1 and 0.12.2 respectively). Thanks, Simon stack trace (based on Rcpp 0.12.2) and I have instrumented XPtr - the R object passed is simply R_NilValue: libc++abi.dylib: terminating with uncaught exception of type Rcpp::not_compatible: expecting an external pointer Process 8286 stopped * thread #1: tid = 0x155af, 0x00007fff8cdf5866 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x00007fff8cdf5866 libsystem_kernel.dylib`__pthread_kill + 10 libsystem_kernel.dylib`__pthread_kill + 10: -> 0x7fff8cdf5866: jae 0x7fff8cdf5870 ; __pthread_kill + 20 0x7fff8cdf5868: movq %rax, %rdi 0x7fff8cdf586b: jmp 0x7fff8cdf2175 ; cerror_nocancel 0x7fff8cdf5870: retq (lldb) bt * thread #1: tid = 0x155af, 0x00007fff8cdf5866 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT * frame #0: 0x00007fff8cdf5866 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff94a0a35c libsystem_pthread.dylib`pthread_kill + 92 frame #2: 0x00007fff8e171b1a libsystem_c.dylib`abort + 125 frame #3: 0x00007fff95267f31 libc++abi.dylib`abort_message + 257 frame #4: 0x00007fff9528d93a libc++abi.dylib`default_terminate_handler() + 240 frame #5: 0x00007fff95c28322 libobjc.A.dylib`_objc_terminate() + 124 frame #6: 0x00007fff9528b1d1 libc++abi.dylib`std::__terminate(void (*)()) + 8 frame #7: 0x00007fff9528ac5b libc++abi.dylib`__cxa_throw + 124 frame #8: 0x00000001044d86df Rcpp.so`Rcpp::XPtr<Rcpp::Module, Rcpp::PreserveStorage, &(this=<unavailable>, x=<unavailable>, tag=<unavailable>, prot=<unavailable>))>::XPtr(SEXPREC*, SEXPREC*, SEXPREC*) + 319 at XPtr.h:67 frame #9: 0x00000001044d67ed Rcpp.so`class__newInstance(SEXPREC*) [inlined] Rcpp::XPtr<Rcpp::Module, Rcpp::PreserveStorage, &(this=0x0000000100806378, x=<unavailable>, tag=<unavailable>, prot=<unavailable>))>::XPtr(SEXPREC*, SEXPREC*, SEXPREC*) + 77 at XPtr.h:71 frame #10: 0x00000001044d67e2 Rcpp.so`class__newInstance(args=<unavailable>) + 66 at Module.cpp:140 frame #11: 0x000000010007406a libR.dylib`do_External(call=<unavailable>, op=<unavailable>, args=<unavailable>, env=<unavailable>) + 378 at dotcode.c:548 [...] _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel