Skip to content

Commit 18914f2

Browse files
committed
Unset MyBEEntry, making elog.c's call to pgstat_get_my_query_id() safe.
Previously log messages late during shutdown could end up using either another backend's PgBackendStatus (multi user) or segfault (single user) because pgstat_get_my_query_id()'s check for !MyBEEntry didn't filter out use after pgstat_beshutdown_hook(). This became a bug in 4f0b096, but was a bit fishy before. But given there's no known problematic cases before 14, it doesn't seem worth backpatching further. Also fixes a wrong filename in a comment, introduced in e102504. Reported-By: Andres Freund <andres@anarazel.de> Reviewed-By: Julien Rouhaud <rjuju123@gmail.com> Discussion: https://postgr.es/m/Julien Rouhaud <rjuju123@gmail.com> Backpatch: 14-
1 parent e191564 commit 18914f2

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/backend/utils/activity/backend_status.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ bool pgstat_track_activities = false;
4646
int pgstat_track_activity_query_size = 1024;
4747

4848

49-
/* exposed so that progress.c can access it */
49+
/* exposed so that backend_progress.c can access it */
5050
PgBackendStatus *MyBEEntry = NULL;
5151

5252

@@ -469,6 +469,9 @@ pgstat_beshutdown_hook(int code, Datum arg)
469469
beentry->st_procpid = 0; /* mark invalid */
470470

471471
PGSTAT_END_WRITE_ACTIVITY(beentry);
472+
473+
/* so that functions can check if backend_status.c is up via MyBEEntry */
474+
MyBEEntry = NULL;
472475
}
473476

474477
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy