> On 3 Dec 2024, at 12:27, Jeff Davis <jdavis@postgresql.org> wrote:
>
> Perform provider-specific initialization in new functions.
>
> Reviewed-by: Andreas Karlsson
> Discussion: https://postgr.es/m/4548a168-62cd-457b-8d06-9ba7b985c477@proxel.se
Hi Jeff!
I'm toying with my WAL compression patch. This test is segfaulting for me:
src/test/recovery % PROVE_TESTS="t/001_stream_rep.pl" PGOPTIONS="-c wal_compression=lz4" make check
in src/test/recovery/tmp_check/log/001_stream_rep_primary.log I observe:
2026-03-06 20:03:01.433 +05 [24424] 001_stream_rep.pl LOG: statement: GRANT pg_read_all_settings TO repl_role;
2026-03-06 20:03:01.441 +05 [24318] LOG: client backend (PID 24426) was terminated by signal 11: Segmentation fault: 11
2026-03-06 20:03:01.441 +05 [24318] LOG: terminating any other active server processes
I do not expect it to pass, it would never pass with given arguments. But I do
not expect it to segfault either.
I bisected the problem, some tome ago this test would fail with something like
"permission denied to change wal_compression". And that seems good.
Later it became "Cannot find collation for ..."
And after 1ba0782ce90cb4261098de59b49ae5cb2326566b it crashes.
wal_compression is PGC_SUSET, so when a non-superuser sets it via the startup
packet (PGC_BACKEND context), set_config_with_handle must call
pg_parameter_aclcheck -> SearchSysCache1(PARAMETERACLNAME, ...) -> hashtext ->
pg_newlocale_from_collation(DEFAULT_COLLATION_OID).
I do not know if it's expected, so I decided to report this problem, just in case.
I can suggest something in a line with attached, but it's kind of point-in-the-sky fix.
Best regards, Andrey Borodin.