v2-0004-Add-instrumentation-to-disable-the-LeakSanitizer-.patch
text/x-patch
Filename: v2-0004-Add-instrumentation-to-disable-the-LeakSanitizer-.patch
Type: text/x-patch
Part: 4
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v2-0004
Subject: Add instrumentation to disable the LeakSanitizer in various paths
| File | + | − |
|---|---|---|
| leak.supp | 4 | 0 |
| meson.build | 2 | 1 |
| src/bin/initdb/meson.build | 1 | 1 |
| src/bin/pg_amcheck/meson.build | 1 | 1 |
| src/bin/pg_basebackup/meson.build | 1 | 1 |
| src/bin/pgbench/meson.build | 1 | 1 |
| src/bin/pg_combinebackup/meson.build | 1 | 1 |
| src/bin/pg_config/meson.build | 1 | 1 |
| src/bin/pg_controldata/meson.build | 1 | 1 |
| src/bin/pg_ctl/meson.build | 1 | 1 |
| src/bin/pg_dump/meson.build | 3 | 3 |
| src/bin/pg_resetwal/meson.build | 1 | 1 |
| src/bin/pg_rewind/meson.build | 1 | 1 |
| src/bin/pg_upgrade/meson.build | 1 | 1 |
| src/bin/pg_verifybackup/meson.build | 1 | 1 |
| src/bin/pg_waldump/meson.build | 1 | 1 |
| src/bin/pg_walsummary/meson.build | 1 | 1 |
| src/bin/psql/meson.build | 1 | 1 |
| src/bin/scripts/meson.build | 1 | 1 |
| src/interfaces/ecpg/preproc/meson.build | 1 | 1 |
| src/interfaces/ecpg/test/meson.build | 2 | 2 |
| src/interfaces/ecpg/test/thread/meson.build | 1 | 1 |
| src/interfaces/libpq/test/meson.build | 1 | 1 |
| src/pl/plpython/plpy_exec.c | 12 | 0 |
| src/pl/plpython/plpy_main.c | 14 | 0 |
| src/pl/plpython/plpy_procedure.c | 14 | 0 |
| src/test/isolation/meson.build | 2 | 2 |
| src/test/modules/libpq_pipeline/meson.build | 1 | 1 |
| src/test/regress/meson.build | 1 | 1 |
From 0c1b9bf1ab5c178ffa4c731b541deedfc9a552ed Mon Sep 17 00:00:00 2001
From: Tristan Partin <tristan@neon.tech>
Date: Mon, 5 Feb 2024 20:29:38 -0600
Subject: [PATCH v2 4/4] Add instrumentation to disable the LeakSanitizer in
various paths
We knowingly leak memory in certain executables, so we should turn leak
detection off. Other code paths also leak memory, like plpython, when
registering global data structures.
---
leak.supp | 4 ++++
meson.build | 3 ++-
src/bin/initdb/meson.build | 2 +-
src/bin/pg_amcheck/meson.build | 2 +-
src/bin/pg_basebackup/meson.build | 2 +-
src/bin/pg_combinebackup/meson.build | 2 +-
src/bin/pg_config/meson.build | 2 +-
src/bin/pg_controldata/meson.build | 2 +-
src/bin/pg_ctl/meson.build | 2 +-
src/bin/pg_dump/meson.build | 6 +++---
src/bin/pg_resetwal/meson.build | 2 +-
src/bin/pg_rewind/meson.build | 2 +-
src/bin/pg_upgrade/meson.build | 2 +-
src/bin/pg_verifybackup/meson.build | 2 +-
src/bin/pg_waldump/meson.build | 2 +-
src/bin/pg_walsummary/meson.build | 2 +-
src/bin/pgbench/meson.build | 2 +-
src/bin/psql/meson.build | 2 +-
src/bin/scripts/meson.build | 2 +-
src/interfaces/ecpg/preproc/meson.build | 2 +-
src/interfaces/ecpg/test/meson.build | 4 ++--
src/interfaces/ecpg/test/thread/meson.build | 2 +-
src/interfaces/libpq/test/meson.build | 2 +-
src/pl/plpython/plpy_exec.c | 12 ++++++++++++
src/pl/plpython/plpy_main.c | 14 ++++++++++++++
src/pl/plpython/plpy_procedure.c | 14 ++++++++++++++
src/test/isolation/meson.build | 4 ++--
src/test/modules/libpq_pipeline/meson.build | 2 +-
src/test/regress/meson.build | 2 +-
29 files changed, 74 insertions(+), 29 deletions(-)
create mode 100644 leak.supp
diff --git a/leak.supp b/leak.supp
new file mode 100644
index 0000000000..d72c5b368f
--- /dev/null
+++ b/leak.supp
@@ -0,0 +1,4 @@
+leak:PyImport_ImportModule
+leak:RAND_status
+leak:save_ps_display_args
+leak:xmlNewNode
diff --git a/meson.build b/meson.build
index 8ed51b6aae..03fe3e0d89 100644
--- a/meson.build
+++ b/meson.build
@@ -3100,6 +3100,7 @@ if library_path_var != ''
test_env.prepend(library_path_var, test_install_location / get_option('libdir'))
endif
+test_env.set('LSAN_OPTIONS', 'print_suppressions=0:suppressions=@0@'.format(meson.source_root() / 'leak.supp'))
# Create (and remove old) initdb template directory. Tests use that, where
# possible, to make it cheaper to run tests.
@@ -3215,7 +3216,7 @@ foreach test_dir : tests
test_kwargs = {
'protocol': 'tap',
'priority': 10,
- 'timeout': 1000,
+ 'timeout': get_option('b_sanitize') == '' ? 1000 : 2000,
'depends': test_deps + t.get('deps', []),
'env': env,
} + t.get('test_kwargs', {})
diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build
index 7dc5ed6e77..7afe6cd326 100644
--- a/src/bin/initdb/meson.build
+++ b/src/bin/initdb/meson.build
@@ -21,7 +21,7 @@ initdb = executable('initdb',
# shared library from a different PG version. Define
# USE_PRIVATE_ENCODING_FUNCS to ensure that that happens.
c_args: ['-DUSE_PRIVATE_ENCODING_FUNCS'],
- dependencies: [frontend_code, libpq, icu, icu_i18n],
+ dependencies: [frontend_code, libpq, icu, icu_i18n, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += initdb
diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build
index 292b33eb09..8bcaab36db 100644
--- a/src/bin/pg_amcheck/meson.build
+++ b/src/bin/pg_amcheck/meson.build
@@ -12,7 +12,7 @@ endif
pg_amcheck = executable('pg_amcheck',
pg_amcheck_sources,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_amcheck
diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build
index f7e60e6670..157fe95c0c 100644
--- a/src/bin/pg_basebackup/meson.build
+++ b/src/bin/pg_basebackup/meson.build
@@ -12,7 +12,7 @@ common_sources = files(
'walmethods.c',
)
-pg_basebackup_deps = [frontend_code, libpq, lz4, zlib, zstd]
+pg_basebackup_deps = [frontend_code, libpq, libpgbincommon_dep, lz4, zlib, zstd]
pg_basebackup_common = static_library('libpg_basebackup_common',
common_sources,
dependencies: pg_basebackup_deps,
diff --git a/src/bin/pg_combinebackup/meson.build b/src/bin/pg_combinebackup/meson.build
index 30dbbaa6cf..ff7e4e796e 100644
--- a/src/bin/pg_combinebackup/meson.build
+++ b/src/bin/pg_combinebackup/meson.build
@@ -17,7 +17,7 @@ endif
pg_combinebackup = executable('pg_combinebackup',
pg_combinebackup_sources,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_combinebackup
diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build
index b4fddd297a..9d717072d4 100644
--- a/src/bin/pg_config/meson.build
+++ b/src/bin/pg_config/meson.build
@@ -12,7 +12,7 @@ endif
pg_config = executable('pg_config',
pg_config_sources,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_config
diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build
index 8009bd8c9a..ff54169084 100644
--- a/src/bin/pg_controldata/meson.build
+++ b/src/bin/pg_controldata/meson.build
@@ -12,7 +12,7 @@ endif
pg_controldata = executable('pg_controldata',
pg_controldata_sources,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_controldata
diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build
index da05bd8a8d..da013dec86 100644
--- a/src/bin/pg_ctl/meson.build
+++ b/src/bin/pg_ctl/meson.build
@@ -12,7 +12,7 @@ endif
pg_ctl = executable('pg_ctl',
pg_ctl_sources,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_ctl
diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build
index ecd0a0a0e1..3e465f9711 100644
--- a/src/bin/pg_dump/meson.build
+++ b/src/bin/pg_dump/meson.build
@@ -41,7 +41,7 @@ endif
pg_dump = executable('pg_dump',
pg_dump_sources,
link_with: [pg_dump_common],
- dependencies: [frontend_code, libpq, zlib],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, zlib],
kwargs: default_bin_args,
)
bin_targets += pg_dump
@@ -60,7 +60,7 @@ endif
pg_dumpall = executable('pg_dumpall',
pg_dumpall_sources,
link_with: [pg_dump_common],
- dependencies: [frontend_code, libpq, zlib],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, zlib],
kwargs: default_bin_args,
)
bin_targets += pg_dumpall
@@ -79,7 +79,7 @@ endif
pg_restore = executable('pg_restore',
pg_restore_sources,
link_with: [pg_dump_common],
- dependencies: [frontend_code, libpq, zlib],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, zlib],
kwargs: default_bin_args,
)
bin_targets += pg_restore
diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build
index c1239528db..d1397fb7ce 100644
--- a/src/bin/pg_resetwal/meson.build
+++ b/src/bin/pg_resetwal/meson.build
@@ -12,7 +12,7 @@ endif
pg_resetwal = executable('pg_resetwal',
pg_resetwal_sources,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_resetwal
diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build
index e0f88bde22..75b74e89ae 100644
--- a/src/bin/pg_rewind/meson.build
+++ b/src/bin/pg_rewind/meson.build
@@ -21,7 +21,7 @@ endif
pg_rewind = executable('pg_rewind',
pg_rewind_sources,
- dependencies: [frontend_code, libpq, lz4, zstd],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, lz4, zstd],
c_args: ['-DFRONTEND'], # needed for xlogreader et al
kwargs: default_bin_args,
)
diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build
index 9825fa3305..11e55a2bbe 100644
--- a/src/bin/pg_upgrade/meson.build
+++ b/src/bin/pg_upgrade/meson.build
@@ -27,7 +27,7 @@ endif
pg_upgrade = executable('pg_upgrade',
pg_upgrade_sources,
c_pch: pch_postgres_fe_h,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_upgrade
diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build
index 7c7d31a035..13c583ef55 100644
--- a/src/bin/pg_verifybackup/meson.build
+++ b/src/bin/pg_verifybackup/meson.build
@@ -12,7 +12,7 @@ endif
pg_verifybackup = executable('pg_verifybackup',
pg_verifybackup_sources,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_verifybackup
diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build
index bb30f0fe08..05d23f7fee 100644
--- a/src/bin/pg_waldump/meson.build
+++ b/src/bin/pg_waldump/meson.build
@@ -18,7 +18,7 @@ endif
pg_waldump = executable('pg_waldump',
pg_waldump_sources,
- dependencies: [frontend_code, lz4, zstd],
+ dependencies: [frontend_code, libpgbincommon_dep, lz4, zstd],
c_args: ['-DFRONTEND'], # needed for xlogreader et al
kwargs: default_bin_args,
)
diff --git a/src/bin/pg_walsummary/meson.build b/src/bin/pg_walsummary/meson.build
index f886a4cb36..bac71a5776 100644
--- a/src/bin/pg_walsummary/meson.build
+++ b/src/bin/pg_walsummary/meson.build
@@ -12,7 +12,7 @@ endif
pg_walsummary = executable('pg_walsummary',
pg_walsummary_sources,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += pg_walsummary
diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build
index d330bb5eb0..5a4eab226f 100644
--- a/src/bin/pgbench/meson.build
+++ b/src/bin/pgbench/meson.build
@@ -27,7 +27,7 @@ endif
pgbench = executable('pgbench',
pgbench_sources,
- dependencies: [frontend_code, libpq, thread_dep],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, thread_dep],
include_directories: include_directories('.'),
c_pch: pch_postgres_fe_h,
c_args: host_system == 'windows' ? ['-DFD_SETSIZE=1024'] : [],
diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build
index f3a6392138..9614a1fbd0 100644
--- a/src/bin/psql/meson.build
+++ b/src/bin/psql/meson.build
@@ -48,7 +48,7 @@ psql = executable('psql',
psql_sources,
c_pch: pch_postgres_fe_h,
include_directories: include_directories('.'),
- dependencies: [frontend_code, libpq, readline],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep, readline],
kwargs: default_bin_args,
)
bin_targets += psql
diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build
index cef24d7806..dc06580f9e 100644
--- a/src/bin/scripts/meson.build
+++ b/src/bin/scripts/meson.build
@@ -29,7 +29,7 @@ foreach binary : binaries
binary = executable(binary,
binary_sources,
link_with: [scripts_common],
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args,
)
bin_targets += binary
diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build
index ddd7a66547..fc21e3fc36 100644
--- a/src/interfaces/ecpg/preproc/meson.build
+++ b/src/interfaces/ecpg/preproc/meson.build
@@ -94,7 +94,7 @@ ecpg_exe = executable('ecpg',
ecpg_sources,
include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc],
c_pch: pch_postgres_fe_h,
- dependencies: [frontend_code],
+ dependencies: [frontend_code, libpgbincommon_dep],
kwargs: default_bin_args,
)
ecpg_targets += ecpg_exe
diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build
index c1e508ccc8..c4c5a3e602 100644
--- a/src/interfaces/ecpg/test/meson.build
+++ b/src/interfaces/ecpg/test/meson.build
@@ -18,7 +18,7 @@ pg_regress_ecpg = executable('pg_regress_ecpg',
pg_regress_ecpg_sources,
c_args: pg_regress_cflags,
include_directories: [pg_regress_inc, include_directories('.')],
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install': false
},
@@ -27,7 +27,7 @@ testprep_targets += pg_regress_ecpg
# create .c files and executables from .pgc files
ecpg_test_exec_kw = {
- 'dependencies': [frontend_code, libpq],
+ 'dependencies': [frontend_code, libpq, libpgbincommon_dep],
'include_directories': [ecpg_inc],
'link_with': [ecpglib_so, ecpg_compat_so, ecpg_pgtypes_so],
'build_by_default': false,
diff --git a/src/interfaces/ecpg/test/thread/meson.build b/src/interfaces/ecpg/test/thread/meson.build
index 5ed67ccbcd..d7e590db61 100644
--- a/src/interfaces/ecpg/test/thread/meson.build
+++ b/src/interfaces/ecpg/test/thread/meson.build
@@ -18,6 +18,6 @@ foreach pgc_file : pgc_files
ecpg_test_dependencies += executable(pgc_file,
exe_input,
- kwargs: ecpg_test_exec_kw + {'dependencies': [frontend_code, libpq, thread_dep,]},
+ kwargs: ecpg_test_exec_kw + {'dependencies': [frontend_code, libpq, libpgbincommon_dep, thread_dep,]},
)
endforeach
diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build
index 21dd37f69b..070c2cc72f 100644
--- a/src/interfaces/libpq/test/meson.build
+++ b/src/interfaces/libpq/test/meson.build
@@ -12,7 +12,7 @@ endif
testprep_targets += executable('libpq_uri_regress',
libpq_uri_regress_sources,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install': false,
}
diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c
index e06fde1dd9..e7a8372b30 100644
--- a/src/pl/plpython/plpy_exec.c
+++ b/src/pl/plpython/plpy_exec.c
@@ -23,6 +23,10 @@
#include "utils/rel.h"
#include "utils/typcache.h"
+#ifdef __SANITIZE_ADDRESS__
+#include <sanitizer/lsan_interface.h>
+#endif
+
/* saved state for a set-returning function */
typedef struct PLySRFState
{
@@ -1040,6 +1044,10 @@ PLy_procedure_call(PLyProcedure *proc, const char *kargs, PyObject *vargs)
PG_TRY();
{
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_disable();
+#endif
+
#if PY_VERSION_HEX >= 0x03020000
rv = PyEval_EvalCode(proc->code,
proc->globals, proc->globals);
@@ -1048,6 +1056,10 @@ PLy_procedure_call(PLyProcedure *proc, const char *kargs, PyObject *vargs)
proc->globals, proc->globals);
#endif
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_enable();
+#endif
+
/*
* Since plpy will only let you close subtransactions that you
* started, you cannot *unnest* subtransactions, only *nest* them
diff --git a/src/pl/plpython/plpy_main.c b/src/pl/plpython/plpy_main.c
index 010a97378c..86d409ca35 100644
--- a/src/pl/plpython/plpy_main.c
+++ b/src/pl/plpython/plpy_main.c
@@ -24,6 +24,10 @@
#include "utils/rel.h"
#include "utils/syscache.h"
+#ifdef __SANITIZE_ADDRESS__
+#include <sanitizer/lsan_interface.h>
+#endif
+
/*
* exported functions
*/
@@ -113,14 +117,24 @@ PLy_initialize(void)
if (inited)
return;
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_disable();
+#endif
+
PyImport_AppendInittab("plpy", PyInit_plpy);
Py_Initialize();
PyImport_ImportModule("plpy");
PLy_init_interp();
PLy_init_plpy();
+
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_enable();
+#endif
+
if (PyErr_Occurred())
PLy_elog(FATAL, "untrapped error in initialization");
+
init_procedure_caches();
explicit_subtransactions = NIL;
diff --git a/src/pl/plpython/plpy_procedure.c b/src/pl/plpython/plpy_procedure.c
index 79b6ef6a44..2ff4337d2a 100644
--- a/src/pl/plpython/plpy_procedure.c
+++ b/src/pl/plpython/plpy_procedure.c
@@ -22,6 +22,10 @@
#include "utils/memutils.h"
#include "utils/syscache.h"
+#ifdef __SANITIZE_ADDRESS__
+#include <sanitizer/lsan_interface.h>
+#endif
+
static HTAB *PLy_procedure_cache = NULL;
static PLyProcedure *PLy_procedure_create(HeapTuple procTup, Oid fn_oid, bool is_trigger);
@@ -370,7 +374,17 @@ PLy_procedure_compile(PLyProcedure *proc, const char *src)
msrc = PLy_procedure_munge_source(proc->pyname, src);
/* Save the mangled source for later inclusion in tracebacks */
proc->src = MemoryContextStrdup(proc->mcxt, msrc);
+
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_disable();
+#endif
+
crv = PyRun_String(msrc, Py_file_input, proc->globals, NULL);
+
+#ifdef __SANITIZE_ADDRESS__
+ __lsan_enable();
+#endif
+
pfree(msrc);
if (crv != NULL)
diff --git a/src/test/isolation/meson.build b/src/test/isolation/meson.build
index 1082887a44..e2c54ba268 100644
--- a/src/test/isolation/meson.build
+++ b/src/test/isolation/meson.build
@@ -35,7 +35,7 @@ pg_isolation_regress = executable('pg_isolation_regress',
isolation_sources,
c_args: pg_regress_cflags,
include_directories: pg_regress_inc,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install_dir': dir_pgxs / 'src/test/isolation',
},
@@ -52,7 +52,7 @@ endif
isolationtester = executable('isolationtester',
isolationtester_sources,
include_directories: include_directories('.'),
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install_dir': dir_pgxs / 'src/test/isolation',
},
diff --git a/src/test/modules/libpq_pipeline/meson.build b/src/test/modules/libpq_pipeline/meson.build
index 727963ee68..4aa732f09d 100644
--- a/src/test/modules/libpq_pipeline/meson.build
+++ b/src/test/modules/libpq_pipeline/meson.build
@@ -12,7 +12,7 @@ endif
libpq_pipeline = executable('libpq_pipeline',
libpq_pipeline_sources,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install': false,
},
diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build
index 5a9be73531..a2a9b87e3f 100644
--- a/src/test/regress/meson.build
+++ b/src/test/regress/meson.build
@@ -30,7 +30,7 @@ endif
pg_regress = executable('pg_regress',
regress_sources,
c_args: pg_regress_cflags,
- dependencies: [frontend_code, libpq],
+ dependencies: [frontend_code, libpq, libpgbincommon_dep],
kwargs: default_bin_args + {
'install_dir': dir_pgxs / 'src/test/regress',
},
--
Tristan Partin
Neon (https://neon.tech)