首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openssl / valgrind

openssl / valgrind
EN

Stack Overflow用户
提问于 2009-01-23 13:07:58
回答 4查看 5.7K关注 0票数 9

我有一个必须计算文件的MD5的应用程序,我已经使用了openssl库,valgrind抱怨一些块仍然可以访问。

编译以下代码:

代码语言:javascript
复制
#include <openssl/bio.h>

int main(int, char**)
{
   BIO * mem = BIO_new(BIO_s_mem());
   BIO_vfree(mem);
   return 0;
}

使用valgrind运行它,这是我得到的结果:

代码语言:javascript
复制
==23597== 220 bytes in 6 blocks are still reachable in loss record 1 of 1
==23597==    at 0x4022D78: malloc (vg_replace_malloc.c:207)
==23597==    by 0x432FD0D: (within /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x433036E: CRYPTO_malloc (in /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x43989C9: lh_new (in /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x4332025: (within /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x433249B: (within /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x4332B5D: CRYPTO_new_ex_data (in /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x438E053: BIO_set (in /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x438E0E9: BIO_new (in /usr/lib/i686/cmov/libcrypto.so.0.9.8)
==23597==    by 0x80485E1: main (in /home/kalman/cxx_test/md5test/a.out)

有没有人有过同样的经历?

EN

回答 4

Stack Overflow用户

发布于 2009-01-23 13:21:53

当不使用-DPURIFY编译时,OpenSSL具有混淆Valgrind的操作。Is this the error you are seeing?

票数 4
EN

Stack Overflow用户

发布于 2009-02-06 05:49:16

我相信这些都是openssl分配的静态结构。我运行了你的代码,我运行了下面的代码,valgrind报告说两者都有相同数量的未释放内存:

代码语言:javascript
复制
#include <openssl/bio.h>

int main(int, char**)
{
   BIO * mem = BIO_new(BIO_s_mem());
   BIO * mem2 = BIO_new(BIO_s_mem());
   BIO * mem3 = BIO_new(BIO_s_mem());
   BIO * mem4 = BIO_new(BIO_s_mem());
   BIO_vfree(mem);
   BIO_vfree(mem2);
   BIO_vfree(mem3);
   BIO_vfree(mem4);
   return 0;
}

~

票数 4
EN

Stack Overflow用户

发布于 2013-10-23 16:14:43

代码语言:javascript
复制
BIO_new() -> BIO_set() -> CRYPTO_new_ex_data() -> int_new_ex_data() -> def_get_class()

int_new_ex_data()不释放def_get_class错误定位的内存。

请参阅:http://openssl.6102.n7.nabble.com/memory-leak-in-engine-cleanup-td30935.html http://rt.openssl.org/Ticket/Display.html?id=2673&user=guest&pass=guest

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/472809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档