Coverity complains about simplehash.h's SH_STAT()

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Coverity complains about simplehash.h's SH_STAT()
Date: 2024-04-08 01:03:53
Message-ID: 3005248.1712538233@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2024-04-08 01:11:48 Re: Optimizing nbtree ScalarArrayOp execution, allowing multi-column ordered scans, skip scan
Previous Message Sutou Kouhei 2024-04-08 01:01:17 Re: meson: Specify -Wformat as a common warning flag for extensions