Re: Regression tests fail with musl libc because libpq.so can't be loaded
Wolfgang Walther <walther@technowledgy.de>
From: Wolfgang Walther <walther@technowledgy.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Bugs <pgsql-bugs@lists.postgresql.org>
Date: 2024-03-16T15:55:49Z
Lists: pgsql-bugs, pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow "make check"-style testing to work with musl C library.
- d82605bcd666 14.12 landed
- 8a92b70c11ba 17.0 landed
- 7651fd387697 16.3 landed
- 7124e7d528a8 12.19 landed
- 3c3f4fd741d0 15.7 landed
- 243e9953281f 13.15 landed
-
Fix compiler warnings on MSYS2
- 8c6d30f21139 13.0 cited
Attachments
Tom Lane: > Why do you think this is our bug and not musl's? Because I tried to reproduce with musl directly with a very simple example as mentioned in: > To rule out a musl bug, I also put together a very simple test-case of an executable loading liba with dlopen(), which depends on libb and then constructing the same scenario with LD_LIBRARY_PATH. This works fine when compiled with glibc and musl, too. Thus, I believe the problem to be somewhere in how postgres loads those libraries. My test case looked like the attached. To compile it with musl via Dockerfile: docker build . -t musl-dlopen && docker run --rm musl-dlopen a.c/a.h is equivalent to libpqwalreceiver and b.c/b.h to libpq. This works fine with both musl and glibc. (Note: I also tried putting liba.so and libb.so in different folders, adding both to LD_LIBRARY_PATH - but that worked fine as well.) Now my very simple example probably does something different than postgres, so that the problem doesn't appear there. But since it seems possible to do this with musl in principle, it should be possible to do it differently in postgres to make it work, too. Any ideas? Best, Wolfgang