Skip to content

rocker-org/r-devel-san-clang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

R-devel SAN using Clang: R development binaries with Sanitizer support

The Writing R Extensions manual details in Section 4.3 how to check memory access. Two sections are devoted to Using the Address Sanitizer and to Using the Undefined Behaviour Sanitizer.

Both require a particularly instrumented binary of R. This repository provides a Docker container with such a binary, based on the R-devel sources.

This repository uses clang; a sibling repository uses gcc.

Note: At least under some Docker versions, this container must be run with docker run --cap-add SYS_PTRACE, otherwise instrumented processes fail to start due to lacking permissions. Alternatively, an instrumented process can be run with ASAN_OPTIONS=detect_leaks=0, but this turns off leak detection.

Note that the instrumented version of R is available on the path as Rdevel, symbolically linked as RD, and that the instrumented versions of Rscript is Rscriptdevel with symbolic link RDscript. Based on the R-devel sources, they use the sanitizer setup that is the focuse here whereas the R and Rscript binaries come from the standard binary package and correspond to R-release without any sanitizer instrumentation. So use RD and RDscript to inspect undefined behavior.

The sanitiziers package by Dirk (also on CRAN here) contains 'known bad' behavior detected by sanitizers, It can be used to validate the setup as it should detect the errors under RD and RDscript---but not under R and Rscript which are not instrumented. If in doubt, use this to familiarise yourself with the sanitizer behavior.

The (newer, larger) r-debug by Winston is also available with even more build configs and is also recommended.

Rocker-Org

This repository is part of Rocker-Org where Rocker -- Docker containers of interest for R users -- is being developed.

All this is work in progress; talk to Dirk or Carl about how to get involved.

Documentation is being added at the Rocker Wiki.

About

R devel with ASAN / UBSAN sanitizers using clang/clang++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages