aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/dsa.h
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-01-05 12:27:09 -0500
committerRobert Haas <rhaas@postgresql.org>2017-01-05 12:27:09 -0500
commit175ff6598e014b2fe84c06fa443161294fc2eed0 (patch)
treedd690b09d8b6a8cce138a4c988446c5aab1254bd /src/include/utils/dsa.h
parent82f8107b92c9104ec9d9465f3f6a4c6dab4c124a (diff)
downloadpostgresql-175ff6598e014b2fe84c06fa443161294fc2eed0.tar.gz
postgresql-175ff6598e014b2fe84c06fa443161294fc2eed0.zip
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.
Diffstat (limited to 'src/include/utils/dsa.h')
-rw-r--r--src/include/utils/dsa.h5
1 files changed, 2 insertions, 3 deletions
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);