[Rcpp-devel] asan and rcpp on osx 10.11

Jeroen Ooms jeroen.ooms at stat.ucla.edu
Thu Oct 22 14:01:10 CEST 2015


I found that Rcpp packages compiled with -fsanitize=address frequently
crash on OS-X. I cannot reproduce this problem on linux so perhaps I
am not using asan correctly, or perhaps it is related to the fact that
R for Mac has been compiled on osx 10.9 and I'm using 10.11. For
regular C packages, asan on osx does seem to work as expected.

Here a minimal reproducible example:
https://github.com/jeroenooms/asantest. It resizes a vector a few
times and then crashes. It works fine if asan is commented out in the
package Makevars.

Compiler info:

jeroen$ cc --version
Apple LLVM version 7.0.0 (clang-700.0.72)
Target: x86_64-apple-darwin15.0.0
Thread model: posix

Crash output:

> test()
=================================================================
==10663==ERROR: AddressSanitizer: unknown-crash on address
0x7fca66019d94 at pc 0x00010b4313d5 bp 0x7fff576d57f0 sp
0x7fff576d4fa0
WRITE of size 8 at 0x7fca66019d94 thread T0
    #0 0x10b4313d4 in __asan_memcpy
(/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x393d4)
    #1 0x10b3ed3a8 in std::__1::vector<int, std::__1::allocator<int>
>::__swap_out_circular_buffer(std::__1::__split_buffer<int,
std::__1::allocator<int>&>&) memory:1582
    #2 0x10b3ed0b7 in std::__1::vector<int, std::__1::allocator<int>
>::__append(unsigned long) vector:1047
    #3 0x10b3ecb3a in test(int) test.cpp:7
    #4 0x10b3e98c7 in asantest_test RcppExports.cpp:15
    #5 0x1085a4966 in do_dotcall dotcode.c:1251
    #6 0x1085d0acb in Rf_eval eval.c:655
    #7 0x10862a2b2 in do_begin eval.c:1716
    #8 0x1085d0cfd in Rf_eval eval.c:627
    #9 0x108627387 in Rf_applyClosure eval.c:1039
    #10 0x1085d0c06 in Rf_eval eval.c:674
    #11 0x10865b1d2 in Rf_ReplIteration main.c:258
    #12 0x10865c6d4 in R_ReplConsole main.c:308
    #13 0x10865c608 in run_Rmainloop main.c:1006
    #14 0x108528f3a in main
(/Library/Frameworks/R.framework/Resources/bin/exec/R+0x100000f3a)
    #15 0x7fff9d9d75ac in start (/usr/lib/system/libdyld.dylib+0x35ac)
    #16 0x0  (<unknown module>)

AddressSanitizer can not describe address in more detail (wild memory
access suspected).
SUMMARY: AddressSanitizer: unknown-crash ??:0 __asan_memcpy


More information about the Rcpp-devel mailing list