Valgrind会通过track-origins=yes
选项告诉您未初始化值的来源。如何通过未初始化值的原点来抑制valgrind警告?
我试图压制这些警告,但问题是基于未初始化值的数据可能会传播到任何地方,从而导致其他地方发出警告。
该解决方案将压制未初始化数据的来源。我该怎么做?可能吗?看来压制文件只能过滤堆栈跟踪。
我想这样做的原因是,OpenSSL的目的是通过使用未初始化的值来增强随机性,并且我想用valgrind测试版本构建(所以-DPURIFY不是选项)。
Valgrind会通过track-origins=yes
选项告诉您未初始化值的来源。如何通过未初始化值的原点来抑制valgrind警告?
我试图压制这些警告,但问题是基于未初始化值的数据可能会传播到任何地方,从而导致其他地方发出警告。
该解决方案将压制未初始化数据的来源。我该怎么做?可能吗?看来压制文件只能过滤堆栈跟踪。
我想这样做的原因是,OpenSSL的目的是通过使用未初始化的值来增强随机性,并且我想用valgrind测试版本构建(所以-DPURIFY不是选项)。
我对你的问题的初步解读是,你可能会禁用所有未初始化的值错误,在这种情况下--undef-value-errors=no
可以做到这一点。
如果你正在寻找一些零碎的东西,一些草率的测试似乎表明使用--gen-suppressions=yes
,然后回答y的相关输出,并将它们放在一个压缩文件中,在摆弄我的openssl二进制文件时为我工作。
此外,您可能会发现How do you tell Valgrind to completely suppress a particular .so file?的答案有用。
不想禁止未初始化的值,因为这样的错误可以在我的程序中... 我想valgrind不显示错误,当未初始化的值来自特定的函数。 – Calmarius
该解决方案将压制未初始化数据的来源。我该怎么做?可能吗?看来压制文件只能过滤堆栈跟踪。
我和OpenSSL有同样的问题。根据Valgrind邮件列表中的Tom Hughes所说,这是不可能的。请参阅Frame-level wildcard not matching in suppression rule?。
对我而言,我试图使用帧级通配符来抑制RAND_init_fips
(OpenSSL FIPS版本的问题)所触及的内存问题。这确实不工作,虽然我们希望它的工作:
{
RAND_init_fips_1
Memcheck:Cond
...
fun:RAND_init_fips
...
}
{
RAND_init_fips_2
Memcheck:Value8
...
fun:RAND_init_fips
...
}
{
RAND_init_fips_3
Memcheck:Value4
...
fun:RAND_init_fips
...
}
我在寻找完全相同的,但我怀疑这是不是一件Valgrind的支持,也有可能支持。这种抑制只适用于'track-origins = yes';没有它,压制就没用了。虽然我很高兴被证明是错误的! –