[R-SIG-Mac] Using sanitizers in MacOS builds

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Wed Dec 10 21:27:06 CET 2025


This was very helpful.  Turns out one loop decremented using i-- when it 
should have had --i.  That overwrote element "-1" of a vector, and 
caused a later crash.  One of the sanitizers caught the out-of-bounds write.

Duncan Murdoch

On 2025-12-10 9:24 a.m., Duncan Murdoch wrote:
> Thanks.  With any luck, these will show my error, and I can make some
> progress.
> 
> Duncan Murdoch
> 
> On 2025-12-10 7:29 a.m., Prof Brian Ripley wrote:
>> On 10/12/2025 11:13, Duncan Murdoch wrote:
>>> I am making some large changes to rgl, and something I've done is
>>> causing crashes which I'm having trouble tracking down.  These are
>>> likely things that one of the sanitizers could detect, so I'd like to do
>>> a build using one.
>>>
>>> The WRE manual gives partial instructions about how to enable them.  It
>>> first says to put these lines in ~/.R/Makevars:
>>>
>>>      CC = gcc -std=gnu99 -fsanitize=address -fno-omit-frame-pointer
>>>      CXX = g++ -fsanitize=address -fno-omit-frame-pointer
>>>      FC = gfortran -fsanitize=address
>>
>> Not for macOS ....
>>
>>> These don't work for me on my Mac, generating lots of compile errors
>>> that I don't see with the default settings.
>>>
>>> Later WRE gives other instructions for clang 18.  What's not clear to me
>>> is what I should do for the default compiler tools (including clang 16)
>>> from mac.r-project.org.  Can anyone suggest what I should do for this
>>> situation:
>>>
>>>     - using the default build of R from CRAN
>>
>> AFAIK you need to build R with sanitizers: it might be possible without
>> but the issues often are partially in the way the package calls back into R.
>>
>>>     - using the libs and tools from mac.r-project.org
>>
>> In principle this might needs libs built against the sanitizers but I
>> have only seen one instance over the years.  Normally you will get less
>> (but still useful) information.
>>
>> Anything built with sanitizers needs to be of the same compiler version
>> as used for R (in Linux experience, even the same patch version).
>>
>>>     - trying to build rgl with the sanitizer options
>>
>> See
>>
>> https://www.stats.ox.ac.uk/pub/bdr/M1-SAN/README.txt
>>
>> which is tested daily, but only with up-to-date macOS and tools.
>>
>> I don't think the gfortran used on macOS has sanitizer support, but it
>> any case GCC's is not compatible with LLVM's.  So this is C/C++ only.
>>
>



More information about the R-SIG-Mac mailing list