Package: src:pg-background
Version: 2.0-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202606/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

Note: This happens randomly to me, but if required I can offer a VM where
it fails 20% of the time, which is already bad enough.

If you want to try to reproduce yourself, the failure seems to happen
a lot more on single-cpu systems, so you might want to try
GRUB_CMDLINE_LINUX="nr_cpus=1".

In either case, the same failure happened here on ppc64el, a release 
architecture:

https://buildd.debian.org/status/fetch.php?pkg=pg-background&arch=ppc64el&ver=2.0-1&stamp=1781006246&raw=0

Maybe this is a race condition which is more likely to happen on (overall) slow 
machines (?).


If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:pg-background, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with pgxs_loop
   dh_auto_clean --buildsystem=pgxs_loop
        pg_buildext clean build-%v postgresql-%v-pg-background
rm -rf build-*/
rm -rf debian/postgresql-*-pg-background/ 
debian/postgresql-*-pg-background.substvars
make[1]: Entering directory '/<<PKGBUILDDIR>>'
rm -f pg_background.so   libpg_background.a  libpg_background.pc
rm -f src/pg_background.o src/pg_background_worker.o src/pg_background.bc 
src/pg_background_worker.bc
rm -rf results/ regression.diffs regression.out tmp_check/ tmp_check_iso/ log/ 
output_iso/
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_clean
   pg_buildext checkcontrol
 debian/rules binary
dh binary --with pgxs_loop
   dh_update_autotools_config
   dh_autoreconf
   dh_auto_configure
   dh_auto_build --buildsystem=pgxs_loop
   create-stamp debian/debhelper-build-stamp
   dh_prep
   dh_auto_install --buildsystem=pgxs_loop 
--destdir=debian/postgresql-18-pg-background/
        pg_buildext loop postgresql-%v-pg-background
### PostgreSQL 18 loop ###
# 18: make
make[1]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration 
[too-long-redacted] ackground.o src/pg_background.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration 
[too-long-redacted] er.o src/pg_background_worker.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration 
[too-long-redacted] protection -fvisibility=hidden 
/usr/bin/clang-21 -Wno-ignored-attributes -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -Wno-unused-command-line-argument 
-Wno-compound-token-split-by-macro -Wno-format-truncation -O2  -I.//src 
-I.//windows -I. -I./ -I/usr/include/postgresql/18/server 
-I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 
-D_GNU_SOURCE  -I/usr/include/libxml2    -flto=thin -emit-llvm -c -o 
src/pg_background.bc src/pg_background.c
/usr/bin/clang-21 -Wno-ignored-attributes -fno-strict-aliasing -fwrapv 
-fexcess-precision=standard -Wno-unused-command-line-argument 
-Wno-compound-token-split-by-macro -Wno-format-truncation -O2  -I.//src 
-I.//windows -I. -I./ -I/usr/include/postgresql/18/server 
-I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 
-D_GNU_SOURCE  -I/usr/include/libxml2    -flto=thin -emit-llvm -c -o 
src/pg_background_worker.bc src/pg_background_worker.c
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
# 18: make install
make[1]: Entering directory '/<<PKGBUILDDIR>>'
/bin/mkdir -p 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib'
/bin/mkdir -p 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/share/postgresql/18/extension'
/bin/mkdir -p 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/share/postgresql/18/extension'
/usr/bin/install -c -m 755  pg_background.so 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/pg_background.so'
/usr/bin/install -c -m 644 .//pg_background.control 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/share/postgresql/18/extension/'
/usr/bin/install -c -m 644 .//extension/pg_background--2.0.sql 
.//extension/pg_background--1.10--2.0.sql 
.//extension/pg_background--1.9--1.10.sql 
.//extension/pg_background--1.8--1.9.sql  
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/share/postgresql/18/extension/'
/bin/mkdir -p 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/bitcode/pg_background'
/bin/mkdir -p 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/bitcode'/pg_background/src/
/usr/bin/install -c -m 644 src/pg_background.bc 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/bitcode'/pg_background/src/
/usr/bin/install -c -m 644 src/pg_background_worker.bc 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/bitcode'/pg_background/src/
cd 
'/<<PKGBUILDDIR>>/debian/postgresql-18-pg-background/usr/lib/postgresql/18/lib/bitcode'
 && /usr/lib/llvm-21/bin/llvm-lto -thinlto -thinlto-action=thinlink -o 
pg_background.index.bc pg_background/src/pg_background.bc 
pg_background/src/pg_background_worker.bc
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
# 18: make clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
rm -f pg_background.so   libpg_background.a  libpg_background.pc
rm -f src/pg_background.o src/pg_background_worker.o src/pg_background.bc 
src/pg_background_worker.bc
rm -rf results/ regression.diffs regression.out tmp_check/ tmp_check_iso/ log/ 
output_iso/
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
### End 18 loop ###
   dh_installdocs
   dh_installchangelogs
   dh_perl
   dh_link
   dh_pgxs_test loop
        pg_buildext installcheck . . postgresql-%v-pg-background
### PostgreSQL 18 installcheck ###
Creating new PostgreSQL cluster 18/regress ...
make[1]: Entering directory '/<<PKGBUILDDIR>>'
echo "# +++ regress install-check in /<<PKGBUILDDIR>> +++" && 
/usr/lib/postgresql/18/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress 
--inputdir=./ --bindir='/usr/lib/postgresql/18/bin'    
--dbname=contrib_regression pg_background
# +++ regress install-check in /<<PKGBUILDDIR>> +++
# using postmaster on localhost, port 5432
not ok 1     - pg_background                           10123 ms
# (test process exited with exit code 2)
1..1
# 1 of 1 tests failed.
# The differences that caused some tests to fail can be viewed in the file 
"/<<PKGBUILDDIR>>/regression.diffs".
# A copy of the test summary that you see above is saved in the file 
"/<<PKGBUILDDIR>>/regression.out".
make[1]: *** [/usr/lib/postgresql/18/lib/pgxs/src/makefiles/pgxs.mk:433: 
installcheck] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
*** /tmp/pg_virtualenv.9TK5zC/log/postgresql-18-regress.log (last 100 lines) ***
2026-06-09 16:06:42.506 UTC [266] LOG:  starting PostgreSQL 18.4 (Debian 
18.4-1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 15.2.0-17) 15.2.0, 
64-bit
2026-06-09 16:06:42.507 UTC [266] LOG:  listening on IPv6 address "::1", port 
5432
2026-06-09 16:06:42.507 UTC [266] LOG:  listening on IPv4 address "127.0.0.1", 
port 5432
2026-06-09 16:06:42.507 UTC [266] LOG:  listening on Unix socket 
"/tmp/.s.PGSQL.5432"
2026-06-09 16:06:42.511 UTC [272] LOG:  database system was shut down at 
2026-06-09 16:06:42 UTC
2026-06-09 16:06:42.513 UTC [266] LOG:  database system is ready to accept 
connections
2026-06-09 16:06:45.675 UTC [314] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:45.675 UTC [314] CONTEXT:  background worker, pid 314
2026-06-09 16:06:45.675 UTC [314] STATEMENT:  SELECT pg_sleep(10); INSERT INTO 
t SELECT 99
2026-06-09 16:06:45.676 UTC [266] LOG:  background worker "pg_background" (PID 
314) exited with exit code 1
2026-06-09 16:06:49.195 UTC [317] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:49.196 UTC [266] LOG:  background worker "pg_background" (PID 
317) exited with exit code 1
2026-06-09 16:06:49.802 UTC [318] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:49.802 UTC [318] CONTEXT:  background worker, pid 318
2026-06-09 16:06:49.802 UTC [318] STATEMENT:  SELECT pg_sleep(2)
2026-06-09 16:06:49.805 UTC [266] LOG:  background worker "pg_background" (PID 
318) exited with exit code 1
2026-06-09 16:06:51.218 UTC [321] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:51.218 UTC [321] CONTEXT:  background worker, pid 321
2026-06-09 16:06:51.218 UTC [321] STATEMENT:  SELECT pg_sleep(10); INSERT INTO 
t_cancel2 VALUES (1)
2026-06-09 16:06:51.220 UTC [266] LOG:  background worker "pg_background" (PID 
321) exited with exit code 1
2026-06-09 16:06:52.035 UTC [323] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:52.035 UTC [323] CONTEXT:  background worker, pid 323
2026-06-09 16:06:52.035 UTC [323] STATEMENT:  SELECT pg_sleep(2)
2026-06-09 16:06:52.036 UTC [266] LOG:  background worker "pg_background" (PID 
323) exited with exit code 1
2026-06-09 16:06:52.255 UTC [327] ERROR:  division by zero
2026-06-09 16:06:52.255 UTC [327] CONTEXT:  background worker, pid 327
2026-06-09 16:06:52.255 UTC [327] STATEMENT:  SELECT 1/0
2026-06-09 16:06:52.257 UTC [266] LOG:  background worker "pg_background" (PID 
327) exited with exit code 1
2026-06-09 16:06:52.470 UTC [330] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:52.470 UTC [330] CONTEXT:  background worker, pid 330
2026-06-09 16:06:52.470 UTC [330] STATEMENT:  SELECT pg_sleep(10); INSERT INTO 
t_batch_cancel VALUES (1)
2026-06-09 16:06:52.471 UTC [331] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:52.471 UTC [331] CONTEXT:  background worker, pid 331
2026-06-09 16:06:52.471 UTC [331] STATEMENT:  SELECT pg_sleep(10); INSERT INTO 
t_batch_cancel VALUES (2)
2026-06-09 16:06:52.473 UTC [266] LOG:  background worker "pg_background" (PID 
330) exited with exit code 1
2026-06-09 16:06:52.473 UTC [266] LOG:  background worker "pg_background" (PID 
331) exited with exit code 1
2026-06-09 16:06:52.806 UTC [336] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:52.806 UTC [336] CONTEXT:  background worker, pid 336
2026-06-09 16:06:52.806 UTC [336] STATEMENT:  SELECT pg_sleep(10)
2026-06-09 16:06:52.808 UTC [266] LOG:  background worker "pg_background" (PID 
336) exited with exit code 1
2026-06-09 16:06:53.113 UTC [337] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:53.113 UTC [337] CONTEXT:  background worker, pid 337
2026-06-09 16:06:53.113 UTC [337] STATEMENT:  SELECT pg_sleep(60)
2026-06-09 16:06:53.115 UTC [266] LOG:  background worker "pg_background" (PID 
337) exited with exit code 1
2026-06-09 16:06:53.122 UTC [339] ERROR:  division by zero
2026-06-09 16:06:53.122 UTC [339] CONTEXT:  background worker, pid 339
2026-06-09 16:06:53.122 UTC [339] STATEMENT:  SELECT 1/0
2026-06-09 16:06:53.124 UTC [266] LOG:  background worker "pg_background" (PID 
339) exited with exit code 1
2026-06-09 16:06:53.127 UTC [340] ERROR:  custom error
2026-06-09 16:06:53.127 UTC [340] CONTEXT:  PL/pgSQL function 
pgbg_test_raise_p0001() line 1 at RAISE
        background worker, pid 340
2026-06-09 16:06:53.127 UTC [340] STATEMENT:  SELECT pgbg_test_raise_p0001()
2026-06-09 16:06:53.130 UTC [266] LOG:  background worker "pg_background" (PID 
340) exited with exit code 1
2026-06-09 16:06:53.132 UTC [341] ERROR:  null value in column "c" of relation 
"pgbg_test_nn_23502" violates not-null constraint
2026-06-09 16:06:53.132 UTC [341] DETAIL:  Failing row contains (null).
2026-06-09 16:06:53.132 UTC [341] CONTEXT:  background worker, pid 341
2026-06-09 16:06:53.132 UTC [341] STATEMENT:  INSERT INTO pgbg_test_nn_23502 
VALUES (NULL)
2026-06-09 16:06:53.135 UTC [266] LOG:  background worker "pg_background" (PID 
341) exited with exit code 1
2026-06-09 16:06:53.139 UTC [342] ERROR:  insert or update on table 
"pgbg_test_fk_child_23503" violates foreign key constraint "fk_23503_parent"
2026-06-09 16:06:53.139 UTC [342] DETAIL:  Key (parent_id)=(999) is not present 
in table "pgbg_test_fk_parent_23503".
2026-06-09 16:06:53.139 UTC [342] STATEMENT:  INSERT INTO 
pgbg_test_fk_child_23503 VALUES (1, 999)
2026-06-09 16:06:53.141 UTC [266] LOG:  background worker "pg_background" (PID 
342) exited with exit code 1
2026-06-09 16:06:53.246 UTC [343] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:53.246 UTC [343] CONTEXT:  background worker, pid 343
2026-06-09 16:06:53.246 UTC [343] STATEMENT:  SELECT pg_sleep(30)
2026-06-09 16:06:53.249 UTC [266] LOG:  background worker "pg_background" (PID 
343) exited with exit code 1
2026-06-09 16:06:54.059 UTC [345] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:54.059 UTC [345] CONTEXT:  background worker, pid 345
2026-06-09 16:06:54.059 UTC [345] STATEMENT:  SELECT pg_sleep(2)
2026-06-09 16:06:54.061 UTC [266] LOG:  background worker "pg_background" (PID 
345) exited with exit code 1
2026-06-09 16:06:54.075 UTC [348] ERROR:  division by zero
2026-06-09 16:06:54.075 UTC [348] CONTEXT:  background worker, pid 348
2026-06-09 16:06:54.075 UTC [348] STATEMENT:  SELECT 1/0
2026-06-09 16:06:54.076 UTC [266] LOG:  background worker "pg_background" (PID 
348) exited with exit code 1
2026-06-09 16:06:54.279 UTC [349] ERROR:  canceling statement due to user 
request
2026-06-09 16:06:54.279 UTC [349] CONTEXT:  background worker, pid 349
2026-06-09 16:06:54.279 UTC [349] STATEMENT:  SELECT pg_sleep(5)
2026-06-09 16:06:54.285 UTC [266] LOG:  background worker "pg_background" (PID 
349) exited with exit code 1
2026-06-09 16:06:54.295 UTC [351] ERROR:  division by zero
2026-06-09 16:06:54.295 UTC [351] CONTEXT:  background worker, pid 351
2026-06-09 16:06:54.295 UTC [351] STATEMENT:  SELECT 1/0
2026-06-09 16:06:54.297 UTC [266] LOG:  background worker "pg_background" (PID 
351) exited with exit code 1
2026-06-09 16:06:54.850 UTC [266] LOG:  background worker "pg_background" (PID 
358) was terminated by signal 11: Segmentation fault
2026-06-09 16:06:54.851 UTC [266] LOG:  terminating any other active server 
processes
2026-06-09 16:06:54.857 UTC [266] LOG:  all server processes terminated; 
reinitializing
Dropping cluster 18/regress ...
**** regression.diffs ****
diff -U3 /<<PKGBUILDDIR>>/expected/pg_background.out 
/<<PKGBUILDDIR>>/results/pg_background.out
--- /<<PKGBUILDDIR>>/expected/pg_background.out 2026-06-07 16:15:08.000000000 
+0000
+++ /<<PKGBUILDDIR>>/results/pg_background.out  2026-06-09 16:06:54.852170197 
+0000
@@ -1958,181 +1958,10 @@
 
     RAISE NOTICE 'Tier A cancel_by_label_v2 (single-worker grace=0 path) OK';
 END$$;
-NOTICE:  Tier A cancel_by_label_v2 (single-worker grace=0 path) OK
--- v2.0: status_v2 was dropped; drivers can call to_jsonb(outcome_v2(...)) 
directly.
-DO $$
-DECLARE
-    r pg_background_run_result;
-    j jsonb;
-BEGIN
-    r := pg_background_run_v2('SELECT 1', label => 'tier-a-status');
-    j := to_jsonb(pg_background_outcome_v2(r.pid, r.cookie));
-    IF NOT (j ? 'pid' AND j ? 'completed' AND j ? 'has_error' AND j ? 
'sqlstate') THEN
-        RAISE EXCEPTION 'outcome_v2 jsonb: missing expected keys: %', j;
-    END IF;
-    RAISE NOTICE 'outcome_v2 jsonb OK';
-END$$;
-NOTICE:  outcome_v2 jsonb OK
--- A6: purge_v2 detaches only stopped workers
-DO $$
-DECLARE
-    h_done    pg_background_handle;
-    h_running pg_background_handle;
-    purged    int;
-BEGIN
-    h_done := pg_background_launch_v2('SELECT 1', 65536, 'tier-a-purge-done');
-    PERFORM pg_background_wait_v2(h_done.pid, h_done.cookie);
-
-    h_running := pg_background_launch_v2('SELECT pg_sleep(60)', 65536, 
'tier-a-purge-keep');
-    /* Give the running worker a moment to attach */
-    PERFORM pg_sleep(0.1);
-
-    purged := pg_background_purge_v2();
-    IF purged < 1 THEN
-        RAISE EXCEPTION 'Tier A purge_v2: expected at least 1, got %', purged;
-    END IF;
-    /* The still-running worker should remain in the list */
-    IF (SELECT count(*) FROM pg_background_list
-         WHERE pid = h_running.pid AND cookie = h_running.cookie) <> 1 THEN
-        RAISE EXCEPTION 'Tier A purge_v2: running worker incorrectly purged';
-    END IF;
-
-    /*
-     * v2.0 (E8): explicit per-handle cleanup instead of detach_all_v2(),
-     * which CLAUDE.md §7 calls out as a banned cleanup pattern. h_done was
-     * already detached by purge_v2 above; only h_running remains.
-     */
-    PERFORM pg_background_cancel_v2(h_running.pid, h_running.cookie);
-    PERFORM pg_background_wait_v2(h_running.pid, h_running.cookie);
-    PERFORM pg_background_detach_v2(h_running.pid, h_running.cookie);
-    RAISE NOTICE 'Tier A purge_v2 OK';
-END$$;
-NOTICE:  Tier A purge_v2 OK
--- =========================================================================
--- v1.10 Tier B (small): full_sql_v2 (B3), application_name (B6)
--- =========================================================================
--- B3: pg_background_full_sql_v2 returns the original SQL
-DO $$
-DECLARE
-    h pg_background_handle;
-    full_sql text;
-BEGIN
-    h := pg_background_launch_v2('SELECT pg_sleep(60), 1 AS phase2_marker', 
65536, 'tier-b-fullsql');
-    full_sql := pg_background_full_sql_v2(h.pid, h.cookie);
-    IF full_sql IS NULL OR full_sql NOT LIKE '%phase2_marker%' THEN
-        RAISE EXCEPTION 'Tier B full_sql_v2: expected SQL containing 
phase2_marker, got %', full_sql;
-    END IF;
-    PERFORM pg_background_cancel_v2(h.pid, h.cookie);
-    PERFORM pg_background_detach_v2(h.pid, h.cookie);
-    RAISE NOTICE 'Tier B full_sql_v2 OK';
-END$$;
-NOTICE:  Tier B full_sql_v2 OK
--- B6: application_name should be 'pg_background:<label>:<pid>'
-DO $$
-DECLARE
-    h pg_background_handle;
-    appname_count int;
-BEGIN
-    h := pg_background_launch_v2('SELECT pg_sleep(3)', 65536, 
'tier-b-appname');
-    /* allow worker to set its application_name */
-    PERFORM pg_sleep(0.3);
-    SELECT count(*) INTO appname_count
-      FROM pg_stat_activity
-     WHERE application_name = 'pg_background:tier-b-appname:' || h.pid;
-    IF appname_count <> 1 THEN
-        RAISE EXCEPTION 'Tier B application_name: expected exactly one worker 
with pg_background:tier-b-appname:<pid>, got %', appname_count;
-    END IF;
-    PERFORM pg_background_cancel_v2(h.pid, h.cookie);
-    PERFORM pg_background_detach_v2(h.pid, h.cookie);
-    RAISE NOTICE 'Tier B application_name OK';
-END$$;
-NOTICE:  Tier B application_name OK
--- =========================================================================
--- 2.0: canonical (unsuffixed) API + deprecated _v2 alias parity
---
--- 2.0 retires the _v2 suffix: the unsuffixed names are canonical and every
--- v2 API name that shipped through 1.10 is kept as a thin deprecated alias.
--- This section exercises the canonical names directly and confirms the
--- aliases still resolve to identical behavior (handles are interchangeable
--- across the two name sets).
--- =========================================================================
--- Full lifecycle through the canonical names only. Fully consuming the
--- result of a stopped worker is terminal and auto-removes the tracking
--- entry, so no detach is needed here (detach() is exercised below).
-DO $$
-DECLARE
-    h pg_background_handle;
-    n int;
-BEGIN
-    h := pg_background_launch('SELECT 7 AS v', 65536, 'canon-lifecycle');
-    PERFORM pg_background_wait(h.pid, h.cookie);
-    SELECT v INTO n FROM pg_background_result(h.pid, h.cookie) AS r(v int);
-    IF n <> 7 THEN
-        RAISE EXCEPTION 'canonical lifecycle: expected 7, got %', n;
-    END IF;
-    RAISE NOTICE 'canonical launch/wait/result OK';
-END$$;
-NOTICE:  canonical launch/wait/result OK
--- run() and run_query() canonical helpers.
-SELECT (pg_background_run('SELECT 1', timeout_ms => 5000)).completed AS 
run_completed;
- run_completed 
----------------
- t
-(1 row)
-
-SELECT * FROM pg_background_run_query('SELECT 42 AS n', timeout_ms => 5000, 
col_def => 'n int') AS r(n int);
- n  
-----
- 42
-(1 row)
-
--- Alias parity: a handle from the canonical launch is operable via the _v2
--- alias, and vice versa (same C symbol, same session hash).
-DO $$
-DECLARE
-    h pg_background_handle;
-    ok bool;
-BEGIN
-    -- launch canonical, wait/detach via aliases
-    h := pg_background_launch('SELECT pg_sleep(0)');
-    ok := pg_background_wait_v2(h.pid, h.cookie, 5000);
-    IF NOT ok THEN RAISE EXCEPTION 'alias wait did not observe completion'; 
END IF;
-    PERFORM pg_background_detach_v2(h.pid, h.cookie);
-
-    -- launch via alias, wait/detach canonical
-    h := pg_background_launch_v2('SELECT pg_sleep(0)');
-    ok := pg_background_wait(h.pid, h.cookie, 5000);
-    IF NOT ok THEN RAISE EXCEPTION 'canonical wait did not observe 
alias-launched worker'; END IF;
-    PERFORM pg_background_detach(h.pid, h.cookie);
-
-    RAISE NOTICE 'canonical/alias handle parity OK';
-END$$;
-NOTICE:  canonical/alias handle parity OK
--- The list view reads the canonical pg_background_list() SRF; the deprecated
--- list_v2() returns the same shape. Both should agree on the (now empty) set.
-SELECT (SELECT count(*) FROM pg_background_list)
-     = (SELECT count(*) FROM pg_background_list_v2()
-          AS l(pid int4, cookie int8, launched_at timestamptz, user_id oid,
-               queue_size int4, state text, sql_preview text, last_error text,
-               consumed bool, label text)) AS list_view_matches_srf;
- list_view_matches_srf 
------------------------
- t
-(1 row)
-
--- The canonical SECURITY DEFINER privilege helpers must not be reachable by
--- a freshly-created role (privilege-escalation guard), mirroring the
--- metadata contract test above.
-DO $$
-BEGIN
-    CREATE ROLE pgbg_canon_priv_role NOLOGIN;
-    IF has_function_privilege('pgbg_canon_priv_role',
-           'pg_background_grant_privileges(text, boolean)', 'EXECUTE')
-       OR has_function_privilege('pgbg_canon_priv_role',
-           'pg_background_revoke_privileges(text, boolean)', 'EXECUTE') THEN
-        RAISE EXCEPTION 'security: canonical privilege helpers reachable by 
PUBLIC/role';
-    END IF;
-    DROP ROLE pgbg_canon_priv_role;
-    RAISE NOTICE 'canonical privilege-helper lockdown OK';
-END$$;
-NOTICE:  canonical privilege-helper lockdown OK
+WARNING:  terminating connection because of crash of another server process
+DETAIL:  The postmaster has commanded this server process to roll back the 
current transaction and exit, because another server process exited abnormally 
and possibly corrupted shared memory.
+HINT:  In a moment you should be able to reconnect to the database and repeat 
your command.
+server closed the connection unexpectedly
+       This probably means the server terminated abnormally
+       before or while processing the request.
+connection to server was lost
### End 18 installcheck (FAILED with exit code 1) ###
dh_pgxs_test: error: pg_buildext installcheck . . postgresql-%v-pg-background 
returned exit code 1
make: *** [debian/rules:4: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------

Reply via email to