运行第三方apk时遇到ubsan问题,不确定导致崩溃的原因。我发现这是因为我的Android.mk添加了以下规则:
LOCAL_SANITIZE := unsigned-integer-overflow signed-integer-overflow
我检查了google ubsan Integer Overflow Sanitization的指南,得到的答案是添加如下规则:
LOCAL_SANITIZE_DIAG := unsigned-integer-overflow signed-integer-overflow
我在测试c ++代码时工作正常,只是测试它是否将打印日志,并且工作正常:
testsize/errorFunc.cpp:15:7: runtime error: unsigned integer overflow: 0 - 2 cannot be represented in type 'unsigned int'
但是让我感到困惑的是,当我的应用程序调用jni函数并最终调用C ++二进制文件的相同函数时。没有日志生成,apks需要特殊的东西才能使用UBsan吗?