diff --git a/src/backend/utils/activity/pgstat_shmem.c b/src/backend/utils/activity/pgstat_shmem.c index cee0bd60234..2b6c7a07f88 100644 --- a/src/backend/utils/activity/pgstat_shmem.c +++ b/src/backend/utils/activity/pgstat_shmem.c @@ -241,6 +241,14 @@ pgstat_detach_shmem(void) pgStatLocal.shared_hash = NULL; dsa_detach(pgStatLocal.dsa); + + /* + * dsa_detach() does not decrement the DSA reference count as no segment + * was provided to dsa_attach_in_place(), causing no cleanup callbacks to + * be registered. Hence, release it manually now. + */ + dsa_release_in_place(pgStatLocal.shmem->raw_dsa_area); + pgStatLocal.dsa = NULL; }