This leak cursor leak can be consistently reproduced by my test program, but 
it doesn't occur every time you create and delete the cursor.

The files you'll need are:
http://www.derkarl.org/~charles/lsm/smaller.trace.bz2
http://www.derkarl.org/~charles/lsm/runlsm.cpp

(The latter of which has changed since the last time I provided it to this 
list)

$ cat smaller.trace | valgrind --leak-check=yes   ~/a.out lsm
==24046== Memcheck, a memory error detector
==24046== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==24046== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==24046== Command: /home/charles/a.out lsm
==24046== 
==24046== 
==24046== HEAP SUMMARY:
==24046==     in use at exit: 39,507 bytes in 24 blocks
==24046==   total heap usage: 4,406,026 allocs, 4,406,002 frees, 149,648,738 
bytes allocated
==24046== 
==24046== 8 bytes in 1 blocks are definitely lost in loss record 1 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x40F5DC: multiCursorAddAll.isra.21 (lsm_sorted.c:2387)
==24046==    by 0x40F64C: multiCursorInit (lsm_sorted.c:2400)
==24046==    by 0x411C6E: lsmMCursorNew (lsm_sorted.c:2495)
==24046==    by 0x40A52F: lsm_csr_open (lsm_main.c:774)
==24046==    by 0x405539: main (runlsm.cpp:255)
==24046== 
==24046== 9 bytes in 1 blocks are possibly lost in loss record 2 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40B038: lsmReallocOrFree (lsm_mem.c:79)
==24046==    by 0x40E501: sortedBlobSet (lsm_sorted.c:373)
==24046==    by 0x40EB90: multiCursorCacheKey (lsm_sorted.c:2690)
==24046==    by 0x4130E4: lsmMCursorSeek (lsm_sorted.c:3077)
==24046==    by 0x405414: main (runlsm.cpp:242)
==24046== 
==24046== 24 bytes in 1 blocks are possibly lost in loss record 3 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x41A5AD: lsmPosixOsMutexNew (lsm_unix.c:654)
==24046==    by 0x40D59D: lsmDbDatabaseConnect (lsm_shared.c:465)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 24 bytes in 1 blocks are possibly lost in loss record 4 of 22
==24046==    at 0x4C28CCE: realloc (vg_replace_malloc.c:632)
==24046==    by 0x41A64E: lsmPosixOsRealloc (lsm_unix.c:499)
==24046==    by 0x41AEAE: lsmPosixOsShmMap (lsm_unix.c:400)
==24046==    by 0x40BAF7: lsmShmCacheChunks (lsm_shared.c:1688)
==24046==    by 0x416F5C: treeShmChunkRc (lsm_tree.c:318)
==24046==    by 0x4185AD: lsmTreeInit (lsm_tree.c:1127)
==24046==    by 0x449277: lsmLogRecover (lsm_log.c:972)
==24046==    by 0x40D7AF: lsmDbDatabaseConnect (lsm_shared.c:365)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 40 bytes in 1 blocks are possibly lost in loss record 5 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x40E14E: multiCursorAllocTree (lsm_sorted.c:2680)
==24046==    by 0x41308C: lsmMCursorSeek (lsm_sorted.c:3066)
==24046==    by 0x405414: main (runlsm.cpp:242)
==24046== 
==24046== 48 bytes in 2 blocks are possibly lost in loss record 6 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x445142: lsmFsOpen (lsm_file.c:660)
==24046==    by 0x40D67F: lsmDbDatabaseConnect (lsm_shared.c:506)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 56 bytes in 1 blocks are possibly lost in loss record 7 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40B038: lsmReallocOrFree (lsm_mem.c:79)
==24046==    by 0x40E501: sortedBlobSet (lsm_sorted.c:373)
==24046==    by 0x413FB2: lsmMCursorValue (lsm_sorted.c:3309)
==24046==    by 0x405008: main (runlsm.cpp:205)
==24046== 
==24046== 64 bytes in 1 blocks are possibly lost in loss record 8 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x41A8E2: lsmPosixOsOpen (lsm_unix.c:81)
==24046==    by 0x40D852: lsmDbDatabaseConnect (lsm_shared.c:412)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 64 bytes in 1 blocks are possibly lost in loss record 9 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x41A8E2: lsmPosixOsOpen (lsm_unix.c:81)
==24046==    by 0x444CC4: lsmFsOpenLog (lsm_file.c:561)
==24046==    by 0x449253: lsmLogRecover (lsm_log.c:969)
==24046==    by 0x40D7AF: lsmDbDatabaseConnect (lsm_shared.c:365)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 96 bytes in 1 blocks are possibly lost in loss record 10 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x449B21: lsmLogBegin (lsm_log.c:371)
==24046==    by 0x40C927: lsmBeginWriteTrans (lsm_shared.c:1372)
==24046==    by 0x40A8A7: lsm_begin (lsm_main.c:901)
==24046==    by 0x40AB95: doWriteOp (lsm_main.c:668)
==24046==    by 0x404CCE: main (runlsm.cpp:157)
==24046== 
==24046== 110 bytes in 1 blocks are possibly lost in loss record 11 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40D9B1: lsmStringExtend (lsm_str.c:37)
==24046==    by 0x449B49: lsmLogBegin (lsm_log.c:374)
==24046==    by 0x40C927: lsmBeginWriteTrans (lsm_shared.c:1372)
==24046==    by 0x40A8A7: lsm_begin (lsm_main.c:901)
==24046==    by 0x40AB95: doWriteOp (lsm_main.c:668)
==24046==    by 0x404CCE: main (runlsm.cpp:157)
==24046== 
==24046== 120 bytes in 1 blocks are possibly lost in loss record 12 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x40D4F8: lsmDbDatabaseConnect (lsm_shared.c:456)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 128 bytes in 1 blocks are possibly lost in loss record 13 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x443CA7: lsmCheckpointDeserialize (lsm_ckpt.c:969)
==24046==    by 0x40C7B1: lsmBeginReadTrans (lsm_shared.c:1181)
==24046==    by 0x40A554: lsm_csr_open (lsm_main.c:769)
==24046==    by 0x405539: main (runlsm.cpp:255)
==24046== 
==24046== 128 bytes in 2 blocks are possibly lost in loss record 14 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x41A8E2: lsmPosixOsOpen (lsm_unix.c:81)
==24046==    by 0x445182: lsmFsOpen (lsm_file.c:561)
==24046==    by 0x40D67F: lsmDbDatabaseConnect (lsm_shared.c:506)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 136 bytes in 1 blocks are possibly lost in loss record 15 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40B920: lsmShmCacheChunks (lsm_shared.c:1650)
==24046==    by 0x40D6BD: lsmDbDatabaseConnect (lsm_shared.c:338)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 136 bytes in 1 blocks are possibly lost in loss record 16 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40BA15: lsmShmCacheChunks (lsm_shared.c:1672)
==24046==    by 0x40D6BD: lsmDbDatabaseConnect (lsm_shared.c:338)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 136 bytes in 1 blocks are possibly lost in loss record 17 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40A8DA: lsm_begin (lsm_main.c:889)
==24046==    by 0x40AB95: doWriteOp (lsm_main.c:668)
==24046==    by 0x404CCE: main (runlsm.cpp:157)
==24046== 
==24046== 160 bytes in 1 blocks are possibly lost in loss record 18 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x40E0C3: multiCursorNew (lsm_sorted.c:2410)
==24046==    by 0x411C41: lsmMCursorNew (lsm_sorted.c:2494)
==24046==    by 0x40A52F: lsm_csr_open (lsm_main.c:774)
==24046==    by 0x405539: main (runlsm.cpp:255)
==24046== 
==24046== 292 bytes in 1 blocks are possibly lost in loss record 19 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x445015: lsmFsOpen (lsm_file.c:631)
==24046==    by 0x40D67F: lsmDbDatabaseConnect (lsm_shared.c:506)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== 344 bytes in 1 blocks are possibly lost in loss record 20 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x418667: lsmTreeCursorNew (lsm_tree.c:1922)
==24046==    by 0x40F661: multiCursorInit (lsm_sorted.c:2402)
==24046==    by 0x411C6E: lsmMCursorNew (lsm_sorted.c:2495)
==24046==    by 0x40A52F: lsm_csr_open (lsm_main.c:774)
==24046==    by 0x405539: main (runlsm.cpp:255)
==24046== 
==24046== 4,608 bytes in 1 blocks are possibly lost in loss record 21 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x409301: lsm_new (lsm_main.c:81)
==24046==    by 0x404AD5: main (runlsm.cpp:143)
==24046== 
==24046== 32,776 bytes in 1 blocks are possibly lost in loss record 22 of 22
==24046==    at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==24046==    by 0x41A61B: lsmPosixOsMalloc (lsm_unix.c:472)
==24046==    by 0x40AF95: lsmMallocZero (lsm_mem.c:50)
==24046==    by 0x40B000: lsmMallocZeroRc (lsm_mem.c:69)
==24046==    by 0x4450B6: lsmFsOpen (lsm_file.c:651)
==24046==    by 0x40D67F: lsmDbDatabaseConnect (lsm_shared.c:506)
==24046==    by 0x409465: lsm_open (lsm_main.c:188)
==24046==    by 0x404B63: main (runlsm.cpp:146)
==24046== 
==24046== LEAK SUMMARY:
==24046==    definitely lost: 8 bytes in 1 blocks
==24046==    indirectly lost: 0 bytes in 0 blocks
==24046==      possibly lost: 39,499 bytes in 23 blocks
==24046==    still reachable: 0 bytes in 0 blocks
==24046==         suppressed: 0 bytes in 0 blocks
==24046== 
==24046== For counts of detected and suppressed errors, rerun with: -v
==24046== ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 4 from 4)
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to