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