2

如何使用 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-cranStatus: OK. 要调试错误,我需要一个可以重现它的 R 版本。

我在 Arch linux (4.9.11-1-ARCH) 上运行 R。我可以R通过pacman安装R-develyaourt不过,对于这个问题,我认为可能必须从源代码安装 R,而我从未这样做过。

编写 R 扩展的第 4.3.3 节似乎是关键,但我不明白。

4

0 回答 0