我尝试使用
-fsanitize=address
在 godbolt.org 上启用地址清理程序,但出现错误:
==3==ERROR: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes at address 2008fff7000 (errno: 12)
==3==ReserveShadowMemoryRange failed while trying to map 0xdfff0001000 bytes. Perhaps you're using ulimit -v
示例:https://godbolt.org/z/5GDtrr
如何正确启用地址清理程序?
根据设计,Asan 在启动时分配大量虚拟内存(x86_64 机器上为 20 Tb)(详细信息此处)。如果禁用了 过量使用 或 使用 ulimit -v 限制虚拟内存,这可能会出现问题。
在这两种情况下,Asan 都无能为力 - 您需要向 Godbolt VM 维护人员提出这个问题 https://github.com/mattgodbolt/compiler-explorer/issues
我将这个答案发布给任何将来在这里遇到困难的人。
目前(2024 年)您可以通过传入
-fsanitize=address
限制来启用 godbolt 中的地址清理程序。有效!