Valgrind是否存在已知的误报问题?

Valgrind是否有任何已知的误报? 我通过fmemopen函数得到’条件跳转或移动取决于未初始化的值’,用C语言编写并用GCC编译。 我能确定这是真的吗?

编辑:抑制文件中是否存在已知问题? 在程序中是否可以做一些事情,这不是真正的错误,但Valgrind会说它们是? 如果存在已知问题,列表会很好。

是的,Valgrind存在误报,这就是为什么它具有特定glibc和gcc版本的抑制文件的原因。 如果您使用较旧的valgrind与较新的gcc和glibc,即valgrind 3.3与glibc 2.9,可能会出现误报。

话虽如此,你仍然需要调查问题并找出它是否真的是误报(如果事实certificate是这样,你可以自己写一个抑制)或者它是你程序中的一个真正的错误。

没有快速简便的方法来说明这里发生了什么,但在这种情况下,我怀疑你是否将未经初始化的值从代码传递到库代码。 尝试Valgrind选项--track-origins=yes 。 它将显示未初始化值的来源。 如果是你的代码,可能你应该初始化它。 如果它在库内,可能是误报,或者仍然是库调用参数的错误值可能导致它,所以检查它们。

Valgrind带有一些默认的错误抑制,但它们绝不涵盖所有库。

错误检查工具可以检测基础库中的许多问题,例如GNU C库和X11客户端库,这些库预先安装在GNU / Linux系统上。 您无法轻松修复这些错误,但您不希望看到这些错误(是的,有很多错误!)因此,Valgrind会在启动时读取要抑制的错误列表。 构建系统时,。/ configure脚本会创建默认抑制文件。

您可以创建自己的错误抑制 ,您知道这些错误抑制与您的代码无关。

是不是通过修复Valgrind的一些误报来激发Debian SSL的事情?