如何使用 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,而我从未这样做过。
编写 R 扩展的第 4.3.3 节似乎是关键,但我不明白。