tcpdump mailing list archives
Possible memory leak
From: Flavio Truzzi <flaviotruzzi () gmail com>
Date: Wed, 10 Nov 2010 10:40:03 -0200
Hi, I'm getting a memory leak in the following code, I made it to iterate through multiple files, I don't know where it leaks... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- do { getline(LArquivos,filename); cout << filename << endl; if (filename == "") break; for (it = VsatXAcc.begin(); it != VsatXAcc.end(); ++it) { // cout << "VSAT: " << it->first << endl; handle = pcap_open_offline(filename.c_str(),errbuff); if (!handle) { cout << errbuff << endl; return -1; } if (pcap_compile(handle,&filtro,it->second->filter.c_str(),0,0) == -1) { cout << "Problema ao compilar filtro" << endl; return -1; } if (pcap_setfilter(handle, &filtro) == -1) { cout << "Problema ao aplicar filtro" << endl; return -1; } // Itera no arquivo bool first = true; do { packet = pcap_next(handle,&header); if (packet == NULL) break; if (first) { it->second->lastTime = header.ts.tv_sec*1000000.0+header.ts.tv_usec; first = false; } if (!packet) break; it->second->size += header.len; it->second->size2 += (header.len)*(header.len); delta = (header.ts.tv_sec*1000000.0+header.ts.tv_usec)-it->second->lastTime; if (delta > 0) { it->second->interArrival += delta; it->second->interArrival2 += delta*delta; } it->second->lastTime = header.ts.tv_sec*1000000.0+header.ts.tv_usec; it->second->n++; } while (packet != NULL); pcap_freecode(&filtro); pcap_close(handle); } } while (!LArquivos.eof()); ---------------------------------------------------------------------------------------------------------------------------------- Valgrind output .... Don't worry with the 59,533 (28,560 direct, 30,973 indirect) bytes in 357 blocks are definitely lost in loss record 21 of 22 (Its not a leak, I use that and close the program later). I want to discover where is this leak -> 118,336 bytes in 357 blocks are definitely lost in loss record 22 of 22 by main (main.cpp:73) line 73 : if (pcap_setfilter(handle, &filtro) == -1) ==7748== Memcheck, a memory error detector ==7748== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==7748== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info ==7748== Command: /home/sherlock/NetBeansProjects/Hounder/dist/Debug/GNU-Linux-x86/hounder ==7748== ==7748== FILE DESCRIPTORS: 4 open at exit. ==7748== Open file descriptor 18: ==7748== <inherited from parent> ==7748== ==7748== Open file descriptor 2: /dev/pts/0 ==7748== <inherited from parent> ==7748== ==7748== Open file descriptor 1: /dev/pts/0 ==7748== <inherited from parent> ==7748== ==7748== Open file descriptor 0: /dev/pts/0 ==7748== <inherited from parent> ==7748== ==7748== HEAP SUMMARY: ==7748== in use at exit: 178,290 bytes in 1,090 blocks ==7748== total heap usage: 36,041 allocs, 34,951 frees, 5,692,166 bytes allocated ==7748== ==7748== 5 bytes in 1 blocks are possibly lost in loss record 1 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b9098b: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a43: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 5 bytes in 1 blocks are possibly lost in loss record 2 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b906eb: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b907b4: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 6 bytes in 1 blocks are possibly lost in loss record 3 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b9098b: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 7 bytes in 1 blocks are possibly lost in loss record 4 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b9098b: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a21: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 7 bytes in 1 blocks are possibly lost in loss record 5 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b906eb: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90781: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 7 bytes in 1 blocks are possibly lost in loss record 6 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b906eb: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b907a3: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 7 bytes in 1 blocks are possibly lost in loss record 7 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b906eb: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 8 bytes in 1 blocks are possibly lost in loss record 8 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b9098b: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a32: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 9 bytes in 1 blocks are possibly lost in loss record 9 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05882461: strdup (in /lib/libc-2.12.1.so) ==7748== by 0x05b906eb: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90792: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 10 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b90977: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a21: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 11 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b90977: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a32: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 12 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b90977: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90a43: init_routing_table_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 13 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b90977: add_routing_table_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b789ea: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 14 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b906d7: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90781: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 15 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b906d7: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b90792: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 16 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b906d7: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b907a3: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 17 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b906d7: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b907b4: init_proto_names (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 32 bytes in 1 blocks are possibly lost in loss record 18 of 22 ==7748== at 0x04c24879: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x05b906d7: add_proto_name (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b9ebe5: ??? (in /usr/lib/libnl.so.1.1) ==7748== by 0x05b789ea: ??? (in /usr/lib/libnl.so.1.1) ==7748== ==7748== 59,533 (28,560 direct, 30,973 indirect) bytes in 357 blocks are definitely lost in loss record 21 of 22 ==7748== at 0x04c25c97: operator ==7748== by 0x00401c40: main (main.cpp:44) ==7748== ==7748== 118,336 bytes in 357 blocks are definitely lost in loss record 22 of 22 ==7748== at 0x04c2619d: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==7748== by 0x04e43fba: install_bpf_program (in /usr/lib/libpcap.so.1.1.1) ==7748== by 0x00401e0a: main (main.cpp:73) ==7748== ==7748== LEAK SUMMARY: ==7748== definitely lost: 146,896 bytes in 714 blocks ==7748== indirectly lost: 30,973 bytes in 357 blocks ==7748== possibly lost: 349 bytes in 18 blocks ==7748== still reachable: 72 bytes in 1 blocks ==7748== suppressed: 0 bytes in 0 blocks ==7748== Reachable blocks (those to which a pointer was found) are not shown. ==7748== To see them, rerun with: --leak-check=full --show-reachable=yes ==7748== ==7748== For counts of detected and suppressed errors, rerun with: -v ==7748== ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 7 from 7) ==7748== Thanks in advance, -- Flavio Sales Truzzi Engenharia Elétrica habilitação Computação e Sistemas Digitais LARC - Laboratório de Arquitetura e Redes de Computadores Escola Politécnica da USP - This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- Possible memory leak Flavio Truzzi (Nov 10)
- Re: Possible memory leak Guy Harris (Nov 13)