lock profiling: fix memory leak

If lock profiling was compiled in, but disabled in the config a
serious memory leak condition was triggered.

Valgrind output:

==11169== 9,091,248 bytes in 189,401 blocks are definitely lost in loss record 564 of 564
==11169==    at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11169==    by 0xABC44C: LockRecordAdd (util-profiling-locks.c:112)
==11169==    by 0xABC950: SCProfilingAddPacketLocks (util-profiling-locks.c:141)
==11169==    by 0xA04CD5: TmThreadsSlotVarRun (tm-threads.c:562)
==11169==    by 0x958793: TmThreadsSlotProcessPkt (tm-threads.h:142)
==11169==    by 0x9599C3: PcapFileCallbackLoop (source-pcap-file.c:172)
==11169==    by 0x56FC130: ??? (in /usr/lib/x86_64-linux-gnu/libpcap.so.1.4.0)
==11169==    by 0x959D24: ReceivePcapFileLoop (source-pcap-file.c:210)
==11169==    by 0xA05B9E: TmThreadsSlotPktAcqLoop (tm-threads.c:703)
==11169==    by 0x6155F6D: start_thread (pthread_create.c:311)
==11169==    by 0x6E399CC: clone (clone.S:113)
pull/859/head
Victor Julien 11 years ago
parent 3ce39433dd
commit 3f49eb843d

@ -136,6 +136,10 @@ void LockRecordAdd(ProfilingLock *l) {
/** \param p void ptr to Packet struct */
void SCProfilingAddPacketLocks(void *p) {
int i;
if (profiling_locks_enabled == 0)
return;
for (i = 0; i < locks_idx; i++) {
pthread_mutex_lock(&lock_records_mutex);
LockRecordAdd(&locks[i]);

Loading…
Cancel
Save