我正在尝试与建立共享库
JNI
函数与GCC的地址消毒剂一起在测试中使用。由于jvm本身并不是用address sinitizer构建的,因此有一个LD峎u预加载技巧可以使其工作如本文所述
issue
.
maven-surefire-plugin
具体如下:
<configuration>
<forkMode>always</forkMode>
<environmentVariables>
<LD_PRELOAD>/usr/lib/x86_64-linux-gnu/libasan.so.4.0.0</LD_PRELOAD>
</environmentVariables>
</configuration>
但是
mvn clean install
SEGV仍然崩溃,如下所示:
T E S T S
ASAN:DEADLYSIGNAL
==1225==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000
生成失败。从
this answer
我得出的结论是,由于JVM将信号用于自己的目的,所以在零地址上读取所导致的SEGV是预期的。
有办法解决这个问题吗?也许可以安全地忽略
SEGV
当使用清理器运行时,类似于使用调试JVM时
gdb
?