Re: BUG #19006: Assert(BufferIsPinned) in BufferGetBlockNumber() is triggered for forwarded buffer
От | Xuneng Zhou |
---|---|
Тема | Re: BUG #19006: Assert(BufferIsPinned) in BufferGetBlockNumber() is triggered for forwarded buffer |
Дата | |
Msg-id | CABPTF7VaW0Hw2-KXoiYFTH40LeUgr06gE5q09sq9LXQPH-vjPA@mail.gmail.com обсуждение исходный текст |
Ответ на | BUG #19006: Assert(BufferIsPinned) in BufferGetBlockNumber() is triggered for forwarded buffer (PG Bug reporting form <noreply@postgresql.org>) |
Ответы |
Re: BUG #19006: Assert(BufferIsPinned) in BufferGetBlockNumber() is triggered for forwarded buffer
|
Список | pgsql-bugs |
Hi, On Sun, Aug 3, 2025 at 8:58 PM PG Bug reporting form <noreply@postgresql.org> wrote: > > The following bug has been logged on the website: > > Bug reference: 19006 > Logged by: Alexander Lakhin > Email address: exclusion@gmail.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@entry=6) at > ./nptl/pthread_kill.c:89 > #3 0x000075efce04527e in __GI_raise (sig=sig@entry=6) at > ../sysdeps/posix/raise.c:26 > #4 0x000075efce0288ff in __GI_abort () at ./stdlib/abort.c:79 > #5 0x00006419a43d5e3f in ExceptionalCondition > (conditionName=conditionName@entry=0x6419a445bb56 "BufferIsPinned(buffer)", > fileName=fileName@entry=0x6419a445b9b7 "bufmgr.c", > lineNumber=lineNumber@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@entry=0x6419bc3d127c, blockNum=710, > nblocks=nblocks@entry=0x7fff9765ee74, flags=flags@entry=0) at bufmgr.c:1500 > #9 0x00006419a423afc4 in read_stream_start_pending_read > (stream=stream@entry=0x6419bc3d1218) at read_stream.c:335 > #10 0x00006419a423b3df in read_stream_look_ahead > (stream=stream@entry=0x6419bc3d1218) at read_stream.c:493 > #11 0x00006419a423b7b3 in read_stream_next_buffer (stream=0x6419bc3d1218, > per_buffer_data=per_buffer_data@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@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@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. > Thanks for reporting this. I can reproduce this issue reliably when shared_buffers is set to 16 MB; raising the value allows the query to complete normally. However, I don't have the expertise to investigate and fix it. Perhaps we could CC Thomas on this thread to see whether he might have time to look into it. Best, Xuneng
В списке pgsql-bugs по дате отправления: