| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2203 人关注过本帖
标题:openssl DTLS内存泄露问题怎么解决
取消只看楼主 加入收藏
zxygww
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
openssl DTLS内存泄露问题怎么解决
本人当前开发调试开源项目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)
搜索更多相关主题的帖子: 开发 通信 项目 证书 资源 
2013-11-17 23:27
快速回复:openssl DTLS内存泄露问题怎么解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015307 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved