Hi, I tried to understand how to check memory access of an R package with C code; see https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Checking-memory-access
I'm about 90% sure I understood WRE Section 4.3.2 about valgrind. In essence: 1) When configuring R before make, use the configure flags '-C --with-valgrind-instrumentation=2 --with-system-valgrind-headers' to get a memory-profiling-enabled version of R. This I found on https://www.stats.ox.ac.uk/pub/bdr/memtests/README.txt and it's also described at the bottom of https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Configuration-options 2) Then use 'R CMD check --use-valgrind' or directly check examples via 'R -d "valgrind --tool=memcheck --leak-check=full" --vanilla < mypkg-Ex.R' I also seems to work (but reports false positives for Mac as others have reported). I'm still struggling with 4.3.3, see https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-Address-Sanitizer. It says "The simplest way to make use of this is to build a version of R with something like..." and CC="gcc -std=gnu99 -fsanitize=address" CFLAGS="-fno-omit-frame-pointer -g -O2 -Wall -pedantic -mtune=native" I set these flags via 'configure CC="gcc -std=gnu99 -fsanitize=address" CFLAGS="-fno-omit-frame-pointer -g -O2 -Wall -pedantic -mtune=native"' before 'make'. I used R-devel for it and the installation was fine. Is there any option 'R CMD check' would need to obtain (like the '--use-valgrind' above)? 'R CMD check mypkg.tar.gz' doesn't seem to do any memory access checking. Would I also need to set "MAIN_LDFLAGS=-fsanitize=address" for configure? (it's a bit unclear from WRE whether this applies to both of the approaches mentioned or just to the one based on Makevars) I also tried the second approach based on "~/.R/Makevars" and put the following in "~/.R/Makevars" as suggested in WRE: CC = gcc -std=gnu99 -fsanitize=address -fno-omit-frame-pointer CXX = g++ -fsanitize=address -fno-omit-frame-pointer F77 = gfortran -fsanitize=address FC = gfortran -fsanitize=address 'R CMD check mypkg.tar.gz' then fails and 00install.out shows (on macOS 10.13.5, R-3.5.0 here): * installing *source* package ‘mypkg’ ... ** libs ... * R ** demo ** byte-compile and prepare package for lazy loading ** help *** installing help indices ** building package indices ** testing if installed package can be loaded sh: line 1: 14016 Abort trap: 6 '/usr/local/R/R-3.5.0_build/bin/R' --no-save --slave 2>&1 < '/var/folders/cb/drz6kv896317dzbg52flzn_r0000gn/T//RtmpTha0EH/file369f755a95ad' ==14016==ERROR: Interceptors are not working. This may be because AddressSanitizer is loaded too late (e.g. via dlopen). Please launch the executable with: DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib "interceptors not installed" && 0 ERROR: loading failed * removing ‘/Users/mhofert/pro/mypkg/mypkg.Rcheck/mypkg’ Any ideas where the 'DYLD_INSERT_LIBRARIES' should go? Thanks & cheers, Marius ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel