From 175ff6598e014b2fe84c06fa443161294fc2eed0 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Thu, 5 Jan 2017 12:27:09 -0500 Subject: Fix possible crash reading pg_stat_activity. With the old code, a backend that read pg_stat_activity without ever having executed a parallel query might see a backend in the midst of executing one waiting on a DSA LWLock, resulting in a crash. The solution is for backends to register the tranche at startup time, not the first time a parallel query is executed. Report by Andreas Seltenreich. Patch by me, reviewed by Thomas Munro. --- src/include/utils/dsa.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/include/utils/dsa.h') diff --git a/src/include/utils/dsa.h b/src/include/utils/dsa.h index 0aca58f5296..bb634e77cda 100644 --- a/src/include/utils/dsa.h +++ b/src/include/utils/dsa.h @@ -90,10 +90,9 @@ typedef dsm_handle dsa_handle; extern void dsa_startup(void); -extern dsa_area *dsa_create(int tranche_id, const char *tranche_name); +extern dsa_area *dsa_create(int tranche_id); extern dsa_area *dsa_create_in_place(void *place, Size size, - int tranche_id, const char *tranche_name, - dsm_segment *segment); + int tranche_id, dsm_segment *segment); extern dsa_area *dsa_attach(dsa_handle handle); extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment); extern void dsa_release_in_place(void *place); -- cgit v1.2.3