Allow "make check"-style testing to work with musl C library.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 26 Mar 2024 15:44:49 +0000 (11:44 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 26 Mar 2024 15:44:49 +0000 (11:44 -0400)
commit3c3f4fd741d0c795470a61d12c285af9acdcea0e
treea32f7ce88b7eedad958e1c3b0eea4d23ddd1e363
parent897efe0f39bee8ced11871ac65cc8d28d9b8ea1e
Allow "make check"-style testing to work with musl C library.

The musl dynamic linker saves a pointer to the process' environment
value of LD_LIBRARY_PATH very early in startup.  When we move/clobber
the environment to make more room for ps status strings, we clobber
that value and thereby prevent libraries from being found via
LD_LIBRARY_PATH, which breaks the use of a temporary installation
for testing purposes.  To fix, stop collecting usable space for
ps status if we notice that the variable we are about to clobber
is LD_LIBRARY_PATH.  This will result in some reduction in how long
the ps status can be, but it's only likely to occur in temporary
test contexts, so it doesn't seem like a big problem.  In any case,
we don't have to do it if we see we are on glibc, which surely is
where the majority of our Linux testing is done.

Thomas Munro, Bruce Momjian, and Tom Lane, per report from Wolfgang
Walther.  Back-patch to all supported branches, with the hope that
we'll set up a buildfarm animal to test on this platform.

Discussion: https://postgr.es/m/fddd1cd6-dc16-40a2-9eb5-d7fef2101488@technowledgy.de
src/backend/utils/misc/ps_status.c