如何使用AddressSanitizer支持从源代码编译R或R-devel?
背景:我的R包通过Rcpp调用几个C ++函数。其中一个抛出堆缓冲区溢出错误
ERROR: AddressSanitizer: heap-buffer-overflow on address 0x611001558228 at pc 0x7f99bd0afabf bp 0x7ffeb8c90cd0 sp 0x7ffeb8c90cc8
......所以CRAN团队告诉我。在使用支持ASAN(AddressSanitizer)的R版本时,仅显示错误。在我自己的R和R-devel版本中,R CMD check --as-cran
以Status: OK
结束。要调试错误,我需要一个可以重现它的R版本。
我在arch linux(4.9.11-1-ARCH)上运行R。我可以通过R
和pacman
通过R-devel
安装yaourt
。但是对于这个问题,我认为可能必须从源代码安装R,这是我从未做过的。
Section 4.3.3 of Writing R extensions似乎很关键,但我不明白。