From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Cc: | exclusion(at)gmail(dot)com |
Subject: | BUG #19006: Assert(BufferIsPinned) in BufferGetBlockNumber() is triggered for forwarded buffer |
Date: | 2025-08-03 12:00:02 |
Message-ID: | 19006-80fcaaf69000377e@postgresql.org |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 19006
Logged by: Alexander Lakhin
Email address: exclusion(at)gmail(dot)com
PostgreSQL version: 18beta2
Operating system: Ubuntu 24.04
Description:
The following script (based on the regress scripts):
CREATE TABLE public.tenk1 (
unique1 integer,
unique2 integer,
two integer,
four integer,
ten integer,
twenty integer,
hundred integer,
thousand integer,
twothousand integer,
fivethous integer,
tenthous integer,
odd integer,
even integer,
stringu1 name,
stringu2 name,
string4 name
);
COPY tenk1 FROM '.../src/test/regress/data/tenk.data';
COPY tenk1 FROM '.../src/test/regress/data/tenk.data';
DELETE FROM tenk1;
COPY tenk1 FROM '.../src/test/regress/data/tenk.data';
SELECT COUNT(*) FROM tenk1 t1 LEFT JOIN
LATERAL (SELECT t1.twenty, t2.two FROM tenk1 t2) s
ON t1.two = s.two
WHERE s.twenty < 0;
with
shared_buffers = 16MB
triggers:
TRAP: failed Assert("BufferIsPinned(buffer)"), File: "bufmgr.c", Line: 4233,
PID: 2785555
Core was generated by `postgres: law regression [local] SELECT
'.
Program terminated with signal SIGABRT, Aborted.
...
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized
out>) at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=<optimized out>) at
./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo(at)entry=6) at
./nptl/pthread_kill.c:89
#3 0x000075efce04527e in __GI_raise (sig=sig(at)entry=6) at
../sysdeps/posix/raise.c:26
#4 0x000075efce0288ff in __GI_abort () at ./stdlib/abort.c:79
#5 0x00006419a43d5e3f in ExceptionalCondition
(conditionName=conditionName(at)entry=0x6419a445bb56 "BufferIsPinned(buffer)",
fileName=fileName(at)entry=0x6419a445b9b7 "bufmgr.c",
lineNumber=lineNumber(at)entry=4233) at assert.c:66
#6 0x00006419a423f028 in BufferGetBlockNumber (buffer=<optimized out>) at
bufmgr.c:4233
#7 0x00006419a42445c5 in StartReadBuffersImpl (allow_forwarding=true,
flags=0, nblocks=0x7fff9765ee74, blockNum=710, buffers=0x6419bc3d127c,
operation=0x6419bc3d1428) at bufmgr.c:1292
#8 StartReadBuffers (operation=0x6419bc3d1428,
buffers=buffers(at)entry=0x6419bc3d127c, blockNum=710,
nblocks=nblocks(at)entry=0x7fff9765ee74, flags=flags(at)entry=0) at bufmgr.c:1500
#9 0x00006419a423afc4 in read_stream_start_pending_read
(stream=stream(at)entry=0x6419bc3d1218) at read_stream.c:335
#10 0x00006419a423b3df in read_stream_look_ahead
(stream=stream(at)entry=0x6419bc3d1218) at read_stream.c:493
#11 0x00006419a423b7b3 in read_stream_next_buffer (stream=0x6419bc3d1218,
per_buffer_data=per_buffer_data(at)entry=0x0) at read_stream.c:971
#12 0x00006419a3efaede in heap_fetch_next_buffer (dir=<optimized out>,
scan=0x6419bc3d0cf8) at heapam.c:675
#13 heapgettup_pagemode (scan=scan(at)entry=0x6419bc3d0cf8, dir=<optimized
out>, nkeys=<optimized out>, key=<optimized out>) at heapam.c:1037
#14 0x00006419a3efb5d2 in heap_getnextslot (sscan=0x6419bc3d0cf8,
direction=<optimized out>, slot=0x6419bc3c11a8) at heapam.c:1391
#15 0x00006419a40d1503 in table_scan_getnextslot (slot=0x6419bc3c11a8,
direction=ForwardScanDirection, sscan=<optimized out>) at
../../../src/include/access/tableam.h:1031
#16 SeqNext (node=node(at)entry=0x6419bc3c0f88) at nodeSeqscan.c:81
#17 0x00006419a40d197f in ExecScanFetch (recheckMtd=0x6419a40d1490
<SeqRecheck>, accessMtd=0x6419a40d14a0 <SeqNext>, epqstate=0x0,
node=<optimized out>) at ../../../src/include/executor/execScan.h:126
#18 ExecScanExtended (projInfo=0x0, qual=0x6419bc38a650, epqstate=0x0,
recheckMtd=0x6419a40d1490 <SeqRecheck>, accessMtd=0x6419a40d14a0 <SeqNext>,
node=0x6419bc3c0f88) at ../../../src/include/executor/execScan.h:187
#19 ExecSeqScanWithQual (pstate=0x6419bc3c0f88) at nodeSeqscan.c:138
#20 0x00006419a40cf97b in ExecProcNode (node=0x6419bc3c0f88) at
../../../src/include/executor/executor.h:313
#21 ExecNestLoop (pstate=<optimized out>) at nodeNestloop.c:159
...
Reproduced starting from 12ce89fd0.
From | Date | Subject | |
---|---|---|---|
Next Message | PG Bug reporting form | 2025-08-03 16:15:10 | BUG #19007: Planner fails to choose partial index with spurious 'not null' |
Previous Message | Michael Paquier | 2025-08-02 10:26:24 | Re: Use-after-free in reorderbuffer.c for INSERT ON CONFLICT |