Today's Coverity run produced this:

/srv/coverity/git/pgsql-git/postgresql/src/include/lib/simplehash.h: 1138 in 
bh_nodeidx_stat()
1132             avg_collisions = 0;
1133         }
1134     
1135         sh_log("size: " UINT64_FORMAT ", members: %u, filled: %f, total 
chain: %u, max chain: %u, avg chain: %f, total_collisions: %u, max_collisions: 
%u, avg_collisions: %f",
1136                tb->size, tb->members, fillfactor, total_chain_length, 
max_chain_length, avg_chain_length,
1137                total_collisions, max_collisions, avg_collisions);
>>>     CID 1596268:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "collisions" going out of scope leaks the storage it points to.
1138     }
1139     
1140     #endif                            /* SH_DEFINE */

I have no idea why we didn't see this warning before --- but AFAICS
it's quite right, and it looks like a nontrivial amount of memory
could be at stake:

    uint32       *collisions = (uint32 *) palloc0(tb->size * sizeof(uint32));

I realize this function is only debug support, but wouldn't it
be appropriate to pfree(collisions) before exiting?

                        regards, tom lane


Reply via email to