From pperry at stern.nyu.edu  Sat May  6 17:36:09 2017
From: pperry at stern.nyu.edu (Patrick Perry)
Date: Sat, 06 May 2017 17:36:09 +0200
Subject: [Rd] xrealloc namespace conflict
Message-ID: <590DED69.30404@stern.nyu.edu>

I have a package on CRAN now (corpus-0.3.1) that is currently failing 
tests on Linux, but passing on all other architectures:

https://cran.r-project.org/web/checks/check_results_corpus.html

I believe that the issue arrises from a namespace class between 
"xrealloc", which my package provides for internal use, but which R also 
seems to provide (possibly as part of TRE in src/extra/tre/xmalloc.c). 
It looks like my package is not picking up my custom xrealloc, but using 
an xrealloc provided by R.

Besides the fact that I am linking to the wrong xrealloc, I think my 
tests are failing for the same reason that the following code segfaults 
on Linux (Debian, with R 3.4.0):

test <- inline::cfunction(language='C',
     otherdefs='void *xmalloc(size_t); void *xrealloc(void *, size_t);',
     body = 'void *ptr = xmalloc(256); xrealloc(ptr, 0); return 
R_NilValue;')
test()
## xrealloc: out of virtual memory

It seems that the R xrealloc doesn't like being given a size of 0, even 
though this behavior is well-defined for realloc (it should free the 
memory). Based on my failing CRAN tests, it looks like this is a 
Linux-specific issue.

Is there a way to modify my Makevars to force the linker to choose my 
version of xrealloc for my package-specific code? My current Makevars 
are at https://github.com/patperry/r-corpus/blob/master/src/Makevars

Thanks in advance for any help.


Patrick


	[[alternative HTML version deleted]]



[Rd] xrealloc namespace conflict
Patrick Perry