Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

udp多份复制时,报文未释放,存在内存泄露的问题 #5

Open
GoogleCodeExporter opened this issue Apr 15, 2015 · 2 comments

Comments

@GoogleCodeExporter
Copy link

一、操作步骤:
1、启用udp多份复制;
2、出现内存泄露;

二、版本
tcpcopy-0.8.0版本

三、问题代码
tc_packets_module.c/L291
        if (replica_num > 1) {
            packet_valid = process_packet(true, packet, recv_len);
            replicate_packs(packet, recv_len, replica_num);
        } else {
            packet_valid = process_packet(false, packet, recv_len);
        }

四、正确修复后的代码
        if (replica_num > 1) {
             replicate_packs(packet, recv_len, replica_num);
        }

       packet_valid = process_packet(false, packet, recv_len);

Original issue reported on code.google.com by [email protected] on 21 Aug 2013 at 3:23

Attachments:

@GoogleCodeExporter
Copy link
Author

多谢你的修改建议,这样修改确实能改进代码。
不过不明白原来的方式为啥会有内存泄漏呢?能否给出内存��
�漏工具的检测结果呢?

Original comment by [email protected] on 21 Aug 2013 at 3:47

@GoogleCodeExporter
Copy link
Author

利用valgrind运行了一下:
[root@hz0-12-162 tcpcopy]# valgrind --tool=memcheck --leak-check=yes 
--show-reachable=yes ./tcpcopy -x 514-10.120.12.148:514 -n 2 2>memcheck.txt
复制两份到测试系统,显示没有内存泄漏

==20013== Memcheck, a memory error detector.
==20013== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==20013== Using LibVEX rev 1658, a library for dynamic binary translation.
==20013== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==20013== Using valgrind-3.2.1, a dynamic binary instrumentation framework.
==20013== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==20013== For more details, rerun with: -v
==20013==
==20013==
==20013== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 1)
==20013== malloc/free: in use at exit: 0 bytes in 0 blocks.
==20013== malloc/free: 53 allocs, 53 frees, 11,379 bytes allocated.
==20013== For counts of detected errors, rerun with: -v
==20013== All heap blocks were freed -- no leaks are possible.

并没有显示内存泄漏

Original comment by [email protected] on 21 Aug 2013 at 9:24

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant