From 97f22d7c7b126464fa2262f93519bcb3bc25c3dc Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Wed, 23 Mar 2022 09:57:19 -0700
Subject: [PATCH v3 2/5] Hack up compatibility between ubsan and ps_status.c.

---
 src/backend/main/main.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index c43a527d3f9..7998fdd1f3f 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -48,6 +48,7 @@
 
 
 const char *progname;
+static bool reached_main = false;
 
 
 static void startup_hacks(const char *progname);
@@ -64,6 +65,8 @@ main(int argc, char *argv[])
 {
 	bool		do_check_root = true;
 
+	reached_main = true;
+
 	/*
 	 * If supported on the current platform, set up a handler to be called if
 	 * the backend/postmaster crashes with a fatal signal or exception.
@@ -443,3 +446,18 @@ check_root(const char *progname)
 	}
 #endif							/* WIN32 */
 }
+
+const char *__ubsan_default_options(void);
+const char *
+__ubsan_default_options(void)
+{
+	/* don't call libc before it's initialized */
+	if (!reached_main)
+		return "";
+
+	/*
+	 * Use our getenv because libsanitizer gets confused by ps_status.c
+	 * overwriting the environ block.
+	 */
+	return getenv("UBSAN_OPTIONS");
+}
-- 
2.35.1.354.g715d08a9e5

