[Rcpp-devel] R CMD BATCH - segfault (was: Create and access several instances of a C++ class from R)
soeren.vogel at uzh.ch
soeren.vogel at uzh.ch
Fri May 20 12:01:07 CEST 2011
On 18.05.2011, at 15:17, Douglas Bates wrote:
> On May 18, 2011 2:53 AM, <soeren.vogel at uzh.ch> wrote:
>
>> [...]
>>
>> When librarying the class, assigning an object, do some calculations,
>> whatever -- everything goes fine. Yet, when using R CMD BATCH on a file
>> listing the same commands as by hand, R produces some nice information at
>> the end, however, here it produces an segmentation fault, which does --
>> according to my small knowledge -- say something bad:
>>
>> proc.time()
>> user system elapsed
>> 0.702 0.017 0.714
>> R(72992) malloc: *** error for object 0x2c9b604: incorrect checksum for
>> freed object - object was probably modified after being freed.
>> *** set a breakpoint in malloc_error_break to debug
>>
>> *** caught segfault ***
>> address 0x4909d58, cause 'memory not mapped'
>>
>> Traceback:
>> 1: save(list = ls(envir = .GlobalEnv, all.names = TRUE), file = outfile,
>> version = version, ascii = ascii, compress = compress, envir =
>> .GlobalEnv, precheck = FALSE)
>> 2: save.image(name)
>> 3: sys.save.image(".RData")
>> aborting ...
>>
>> Any idea what goes wrong there?
>
> As you can see, the problem occurs when R is saving the worksheet. At
> present an instance of a Rcpp module class cannot be saved. It is likely
> that this will need to be addressed by the person designing each C++ class
> that will be expressed in a module. R can't serialize the contents of
> memory that it doesn't "own".
>
> The current fix is "don't do that". Add the --no-save or --vanilla in your
> call to R CMD BATCH to suppress saving the worksheet.
Hello Douglas
Ah, I see. Thanks for this tip.
However, I am wondering why removing objects and detaching the package (where the Rcpp module resides) do not resolve the issue in the same way:
x <- new(FOO)
do_something_with_x()
rm(x)
detach("package:GUTS")
Regards
*S*
More information about the Rcpp-devel
mailing list