急急急!openssl DTLS内存泄露

中下游国外我 2013-11-17 11:03:22
本人当前开发调试开源项目opencapwap,在使用openssl库建立DTLS连接时出现严重的内存泄露问题

介绍:opencapwap对每个会话建立一个线程,在线程中使用X509证书进行DTLS 的握手连接,成功连接后进行通信,会话结束后,线程退出,线程退出时会调用下列函数来释放openssl的资源。
(参照openssl FQA中针对内存泄露的问题)
ERR_remove_state(0);
ENGINE_cleanup();
CONF_modules_unload(1);
ERR_free_strings();
EVP_cleanup();
CRYPTO_cleanup_all_ex_data();

测试:现通过测试会话线程的反复建立和销毁,发现严重的内存泄露问题,整个进程占用的内存资源不断增大。

分析:使用valgrind进行测试,发现内存泄露位置存在于openssl库中,log如下,从log分析看来每次会话握手协商获取客户端证书时会申请一块内存,但会话线程退出时没有释放。
不知各位大侠有何高见!我弄了一周了,都没有办法,急死我了!求救各位大侠帮忙啊!!!!

log:--------------------------------------------
==19217== 187,068 (3,864 direct, 183,204 indirect) bytes in 42 blocks are definitely lost in loss record 237 of 240
==19217== at 0x4023F50: malloc (vg_replace_malloc.c:236)
==19217== by 0x8090EBF: CRYPTO_malloc (mem.c:328)
==19217== by 0x80B7602: asn1_item_ex_combine_new (tasn_new.c:191)
==19217== by 0x80BA711: ASN1_item_ex_d2i (tasn_dec.c:398)
==19217== by 0x80BAE88: ASN1_item_d2i (tasn_dec.c:134)
==19217== by 0x80B6946: d2i_X509 (x_x509.c:136)
==19217== by 0x807ECB4: ssl3_get_client_certificate (s3_srvr.c:2576)
==19217== by 0x806AB14: dtls1_accept (d1_srvr.c:484)
...全文
254 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigPig 2014-07-11
  • 打赏
  • 举报
回复
bug已经恢复了吧。。。都这么久了。。。哈哈。。。现在还在搞opencapwap么?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧