[Rcpp-devel] RcppOctave on Windows: testing needed

Dominick Samperi djsamperi at gmail.com
Thu Oct 10 21:26:39 CEST 2013


The problem here is that Mac Ports installs a very old version of Octave.
Installing the latest version (3.6.4) from source seems to resolve the
issue. At least .O$version() works!

Installing Octave from source under MacOS takes some work due
to many dependencies, and the need for work-arounds for Apple
changes and deprecated features. See, for example:
http://wiki.octave.org/Octave_for_Mac



On Thu, Oct 10, 2013 at 1:01 AM, Dominick Samperi <djsamperi at gmail.com>wrote:

> 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/88d96d43/attachment.html>


More information about the Rcpp-devel mailing list