From 97f22d7c7b126464fa2262f93519bcb3bc25c3dc Mon Sep 17 00:00:00 2001 From: Andres Freund 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