gpt4 book ai didi

c - memcheck 错误是否可以接受?

转载 作者:行者123 更新时间:2023-12-03 20:22:52 31 4
gpt4 key购买 nike

valgrind quickstart page提到:

Try to make your program so clean that Memcheck reports no errors. Once you achieve this state, it is much easier to see when changes to the program cause Memcheck to report new errors. Experience from several years of Memcheck use shows that it is possible to make even huge programs run Memcheck-clean. For example, large parts of KDE, OpenOffice.org and Firefox are Memcheck-clean, or very close to it.


这个块让我有点困惑。看到 C 标准的工作方式,我会假设产生 memcheck 错误的大多数(如果不是全部)实践会在程序上调用未定义的行为,因此应该像瘟疫一样避免。
然而,引用块中的最后一句话暗示实际上有“著名”程序在生产中运行时出现了 memcheck 错误。读完这篇之后,我想我应该把它测试一下,我尝试用 valgrind 运行 VLC,在启动后立即得到一堆 memcheck 错误。
这让我想到了这个问题:是否有充分的理由不从生产中的程序中消除此类错误?发布包含此类错误的程序是否有任何好处,如果是,开发人员如何确保其安全,尽管据我所知,包含此类错误的程序可能会出现不可预测的行为并且没有办法对其一般行为做出假设?如果是这样,您能否提供一些实际案例,说明程序在运行这些错误时比没有运行时更好?

最佳答案

有一种情况,修复 Valgrind 报告的错误实际上会导致安全漏洞,例如参见https://research.swtch.com/openssl .使用未初始化内存的意图是通过具有一些随机字节来增加熵,该修复导致更可预测的随机数,实际上削弱了安全性。
如果是 VLC,请随时进行调查 ;-)

关于c - memcheck 错误是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67664865/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com