pgsql: Install a check for mis-linking of src/port and src/commonfunct

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Install a check for mis-linking of src/port and src/commonfunct
Дата
Msg-id E1fz2Un-0004eK-Ka@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Install a check for mis-linking of src/port and src/common functions.

On ELF-based platforms (and maybe others?) it's possible for a shared
library, when dynamically loaded into the backend, to call the backend
versions of src/port and src/common functions rather than the frontend
versions that are actually linked into the shlib.  This is definitely
not what we want, because the frontend versions often behave slightly
differently.  Up to now it's been "slight" enough that nobody noticed;
but with the addition of SCRAM support functions in src/common, we're
observing crashes due to the difference between palloc and malloc
memory allocation rules, as reported in bug #15367 from Jeremy Evans.

The purpose of this patch is to create a direct test for this type of
mis-linking, so that we know whether any given platform requires extra
measures to prevent using the wrong functions.  If the test fails, it
will lead to connection failures in the contrib/postgres_fdw regression
test.  At the moment, *BSD platforms using ELF format are known to have
the problem and can be expected to fail; but we need to know whether
anything else does, and we need a reliable ongoing check for future
platforms.

Actually fixing the problem will be the subject of later commit(s).

Discussion: https://postgr.es/m/153626613985.23143.4743626885618266803@wrigleys.postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ed0cdf0e05134d1084b01bf8a77e9e1dc5081f91

Modified Files
--------------
src/backend/bootstrap/bootstrap.c |  8 ++++++++
src/common/Makefile               |  3 ++-
src/common/link-canary.c          | 36 ++++++++++++++++++++++++++++++++++++
src/include/common/link-canary.h  | 17 +++++++++++++++++
src/interfaces/libpq/.gitignore   |  1 +
src/interfaces/libpq/Makefile     |  6 +++---
src/interfaces/libpq/fe-connect.c | 14 ++++++++++++++
src/tools/msvc/Mkvcbuild.pm       |  3 ++-
8 files changed, 83 insertions(+), 5 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Noah Misch
Дата:
Сообщение: pgsql: Allow ENOENT in check_mode_recursive().
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Work around stdbool problem in dfmgr.c.