On Sun, Jan 24, 2010 at 08:42:42PM -0800, Marvin Humphrey wrote:
> We should try to hunt this down logically before spending too much time on
> reproducing it.

I bet it's this, from PostPool_Shrink():

mar...@smokey:~/projects/ks/perl $ svn diff ..
Index: ../core/KinoSearch/Index/PostingPool.c
===================================================================
--- ../core/KinoSearch/Index/PostingPool.c  (revision 5749)
+++ ../core/KinoSearch/Index/PostingPool.c  (working copy)
@@ -254,6 +254,7 @@
     } 
     else {
         FREEMEM(self->cache);
+        self->cache      = NULL;
         self->cache_tick = 0;
         self->cache_max  = 0;
         self->cache_cap  = 0;

Without that NULL assignment, you'd probably see a double free on destroy under
the right circumstances.

Fixed by r5750.

Marvin Humphrey

Reply via email to