[Rcpp-devel] RcppOctave on Windows: testing needed

Renaud Gaujoux renaud at mancala.cbio.uct.ac.za
Wed Oct 9 10:21:06 CEST 2013


You are a resourceful person Dominick! :D
I was not thinking in going Mac for now, because I can't test anything, but
it will be great if we manage our way through it as well.

1. In src/modules/Makefile.in, the '-F' flag (for framework) is not
>     recognized by mkoctfile, so I added this temporary work-around:
>
> #R_LDFLAGS = @R_LDFLAGS@
> R_LDFLAGS = -L/Library/Frameworks/R.framework/Libraries -lR
>

One can probably test for Mac in configure.in and tweak the R_LDFLAGS for
this platform only.

>
> 2. Parsing the man files o_whatever.Rd fails (attempt to
>     free an unallocated pointer), so I removed all of these
>     man pages for now (the failure occurs in
>    <R>/src/library/tools/R/Rd.R, function .build_Rd_db(),
>    where .fetch_Rd_object is applied to each Rd file).
>

The o_*.Rd files document more R-friendly wrappers to octave functions.
They contain \Sexp statements that retrieve Octave help files of the
associated function via RcppOctave o_help function:

\Sexpr[results=rd,stage=render]{RcppOctave::o_help(<octave_function_name>,
format='rd')}

For packages that contain such expressions in man pages, R CMD build also
generate the manual pdf, by installing the package in a temp directory and
evaluating the code in all \Sexpr statements. On Windows, R CMD INSTALL
--build also renders the man pages.
So the issue will probably solves away when the package loads properly.

For quick testing compilation and load on Windows, I run R CMD INSTALL
directly on the package source directory with flag --no-help. To ensure a
fresh compilation at each run I use --preclean which runs the cleanup
script, and removes everything, including the .o, .so, .dll, .oct files:

# mkdir libtest
R --vanilla CMD INSTALL -l libtest --no-help --preclean pkg_src_directory


> 3. With these changes the build gets to the point where
>     the install process checks if the package can be
>     loaded, and fails with:
>
> ** testing if installed package can be loaded
> sh: line 1: 55395 Abort trap: 6
> '/Library/Frameworks/R.framework/Resources/bin/R' --no-save --slave 2>&1 <
> '/var/folders/fq/2th4vc9n1mq9cxv5nl9bmzkc0000gn/T//RtmpbjkEA7/filed5d471d0dd21'
> R(55395) malloc: *** error for object 0x7fff7684d570: pointer being freed
> was not allocated
> *** set a breakpoint in malloc_error_break to debug
> ERROR: loading failed
> * removing ‘/Users/dsamperi/Library/R/3.0/library/RcppOctave’
> * restoring previous ‘/Users/dsamperi/Library/R/3.0/library/RcppOctave’
>
> 4. If I ignore this and try to run library(RcppOctave) in R I get:
>
> > library(RcppOctave)
> Loading required package: Rcpp
> Loading required package: pkgmaker
> Loading required package: registry
> R(55403) malloc: *** error for object 0x7fff7684d570: pointer being freed
> was not allocated
> *** set a breakpoint in malloc_error_break to debug
> Abort trap: 6
>
> 5. Setting the breakpoint as instructed was not very helpful
> as the malloc code does not have symbols and cannot be
> traced.
>
>
I will double check for bad allocations in the code, but will unfortunately
be limited in my ability to debug this.

Renaud
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131009/5411687d/attachment.html>


More information about the Rcpp-devel mailing list