J.J.,

I went now on the cluster Linux Scientific and used there compileAttributes 
(also with gcc-4.8.2). There were no problems. 

On my Mac I figured out, where exactly in the compileAttributes function in 
attributes.cpp the error happens:

On line 2794 with generators.writeBegin()

And further in the for loop at 1926 in iteration 3, which I believe  calls 
writeFunctions of the CppExportsIncludeGenerator. I then started at the 
constructor for this class at line 1578 and used an Rprintf(“”) to give me the 
includeDir_ path string. When I then tried to compile Rcpp from the shell I got 
a weird error during linking:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool:
 changing install names or rpaths can't be redone for: libRcpp.dylib (for 
architecture x86_64) because larger updated load commands do not fit (the 
program must be relinked, and you may need to use -headerpad or 
-headerpad_max_install_names)

I recompiled Rcpp, including in the 
MAKEFLAGS=“CXXFLAGS=-headerpad_max_install_names” (described here: 
http://www.manpages.info/macosx/ld.1.html) and it worked fine. Running 
afterwards compileAttributes in R did not throw any error. I got the 
includeDir_: mypackage/inst/include/. RcppExports.cpp contains now the function 
I coded. 

I do not know yet, why adding space to the header padding make things work now.


Best
Simon

On 01 Nov 2013, at 17:01, JJ Allaire <[email protected]> wrote:

> Simon,
> 
> The other use was also using gcc-4.8.1 so it's got something to do with that 
> (I don't have a local install of gcc-4.8.1 so can't repo offhand). If you are 
> running compileAttributes inside RStudio it will run in a separate process. 
> If not then I don't know of any significant difference between calling 
> sourceCpp and compileAttributes.
> 
> J.J.
> 
> 
> On Fri, Nov 1, 2013 at 11:19 AM, Simon Zehnder <[email protected]> wrote:
> Point landing J.J.!
> 
> I already compiled a new R when Mavericks came out with a newly installed a 
> gcc-4.8.2, that I can load via environment modules. I also installed the 
> Xcode Command Line Tools for Mavericks.
> 
> I now reinstalled Rcpp with the gcc-4.8.2 and threw away all object and 
> shared-object files in my /src/ folder of my package. The problem remains. Is 
> there something special I can look for in my Makeconf file? What is so 
> different about ‘compileAttributes’ in contrast to ‘sourceCpp’ or a usual 
> package compilation via R CMD INSTALL? Does compileAttributes uses some 
> additional flags and/or libraries?
> 
> Best
> Simon
> 
> 
> 
> On 01 Nov 2013, at 15:56, JJ Allaire <[email protected]> wrote:
> 
> > Are you by any chance on OS X Mavericks? I had one other user report this 
> > specific error on Mavericks and it seemed to be related to the use of 
> > different compilers (and thus different heaps) within the same compilation 
> > (there is exposure to this with the changes made by Apple to the toolchain 
> > in Mavericks).
> >
> > J.J.
> >
> >
> > On Fri, Nov 1, 2013 at 10:01 AM, Simon Zehnder <[email protected]> wrote:
> > Dear Rcpp::Users and Rcpp::Devels,
> >
> > I get a weird exception when I try to compile an attribute in one of my 
> > packages:
> >
> > compileAttributes("/Users/simonzehnder/git/mmstruct/mmstruct/")
> > R(6256,0x7fff79ad9310) malloc: *** error for object 0x7fff7ac48330: pointer 
> > being freed was not allocated
> > *** set a breakpoint in malloc_error_break to debug
> > Abort trap: 6
> >
> > If I instead use the sourceCpp function all works fine:
> >
> > sourceCpp("/Users/simonzehnder/git/mmstruct/mmstruct/src/testing.cpp”)
> > testfunction_cc(c(0,0,0), list(trades = rnorm(10), T = 360))
> > [1] 0.000000e+00 3.509927e-05 1.169976e-05
> >
> > The function in my file is actually pretty simple (and its the only one):
> >
> > #include<Rcpp.h>
> >
> > // [[Rcpp::export]]
> >
> > Rcpp::NumericVector testfunction_cc(Rcpp::NumericVector par,
> >         Rcpp::List list)
> > {
> >     const unsigned int K        = par.size();
> >     Rcpp::NumericVector trades  = list["trades"];
> >     const unsigned int T        = list["T"];
> >     double tmp = mean(trades)/T;
> >     std::vector<double> startp(K);
> >     startp[0] = 0.0;
> >     startp[1] = tmp * 0.75/2;
> >     startp[2] = tmp * 0.25/2;
> >
> >     return Rcpp::wrap(startp);
> > }
> >
> > At this moment I am a little perplexed. Where should I search for a 
> > possible error? What are things to try out?
> >
> > Best
> >
> > Simon
> >
> > _______________________________________________
> > Rcpp-devel mailing list
> > [email protected]
> > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> >
> 
> 

_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to