On Wed, Apr 08, 2026 at 01:17:45PM -0400, Tom Lane wrote:
> Alexander Lakhin <exclusion@gmail.com> writes:
>> Please look at a new anomaly, I and SQLsmith have discovered:
>> SELECT (SELECT score FROM pg_stat_get_autovacuum_scores() LIMIT 1),
>> (SELECT score FROM pg_stat_get_autovacuum_scores() LIMIT 1);
>> ERROR: detected double pfree in PgStat Snapshot 0x5f6fa4d95d50
>
> Good catch, but you're not the first:
>
> https://www.postgresql.org/message-id/CAHewXNkJKdwb3D5OnksrdOqzqUnXUEMpDam1TPW0vfUkW%3D7jUw%40mail.gmail.com
Hm. I can't get excited about checking pgstat_fetch_consistency (as
proposed in that other report), but I see that commit 02502c1bca added the
freeing behavior in question. I wonder if it makes sense to just skip
freeing when relation_needs_vacanalyze() is called from the view, i.e., not
an autovacuum worker. On the other hand, maybe we shouldn't be caching
entries for a view like this that looks through all tables in the
database...
--
nathan