[Rcpp-devel] RcppOctave on Windows: testing needed

Dominick Samperi djsamperi at gmail.com
Thu Oct 10 07:01:02 CEST 2013


It appears that there is some conflict between Rcpp and Octave under
Mac OS X that doesn't depend on the design of RcppOctave. Just
drop the files strtest.cpp and Makevars (attached) into Rcpp/src and
run R CMD INSTALL Rcpp. This leads to a memory error. The file
strtest.cpp was stripped out of rcpp_octave.cpp, but it does not
use RcppOctave or Rcpp (it is just a trivial Octave client).

Since the problem is OS-dependent, it might have something do to
with static initializers in the Octave string_vector class, or perhaps there
is a MacOS-specific conflict with std::string.



On Wed, Oct 9, 2013 at 4:21 AM, Renaud Gaujoux <
renaud at mancala.cbio.uct.ac.za> wrote:

> 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/20131010/6dea1391/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Makevars
Type: application/octet-stream
Size: 1878 bytes
Desc: not available
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131010/6dea1391/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: strtest.cpp
Type: text/x-c++src
Size: 595 bytes
Desc: not available
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131010/6dea1391/attachment-0001.cpp>


More information about the Rcpp-devel mailing list