Re: Reducing the chunk header sizes on all memory context types

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: David Rowley <dgrowleyml(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Reducing the chunk header sizes on all memory context types
Date: 2022-08-29 14:55:42
Message-ID: 3201943.1661784942@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> writes:
> Yeah, I also thought that way but couldn't find a reason. I think if
> David is able to reproduce it on one of his systems then he can try
> locally reverting both the commits one by one.

It seems to repro easily on any 32-bit platform. Aside from the
buildfarm results, I've now duplicated it on 32-bit ARM (which
eliminates the possibility that it's big-endian specific).

"bt full" from the first crash gives

#0 0xb6d7126c in raise () from /lib/libc.so.6
No symbol table info available.
#1 0xb6d5c360 in abort () from /lib/libc.so.6
No symbol table info available.
#2 0x00572430 in ExceptionalCondition (
conditionName=conditionName(at)entry=0x745110 "pointer == (void *) MAXALIGN(pointer)", errorType=errorType(at)entry=0x5d18d0 "FailedAssertion",
fileName=fileName(at)entry=0x7450dc "../../../../src/include/utils/memutils_internal.h", lineNumber=lineNumber(at)entry=120) at assert.c:69
No locals.
#3 0x005a0d90 in GetMemoryChunkMethodID (pointer=<optimized out>)
at ../../../../src/include/utils/memutils_internal.h:120
header = <optimized out>
#4 0x005a231c in GetMemoryChunkMethodID (pointer=<optimized out>)
at ../../../../src/include/utils/memutils_internal.h:119
header = <optimized out>
header = <optimized out>
#5 pfree (pointer=<optimized out>) at mcxt.c:1242
No locals.
#6 0x003c8fdc in ReorderBufferCleanupTXN (rb=0x7450dc, rb(at)entry=0x1f,
txn=0x745110, txn(at)entry=0xe1f800) at reorderbuffer.c:1493
change = <optimized out>
found = false
iter = {cur = <optimized out>, next = 0xddcb18, end = 0xde4e64}
#7 0x003ca968 in ReorderBufferProcessTXN (rb=0x1f, rb(at)entry=0xe1f800,
txn=0xe1f800, commit_lsn=<optimized out>, snapshot_now=<optimized out>,
command_id=<optimized out>, streaming=false) at reorderbuffer.c:2514
change = 0x0
_save_exception_stack = 0x0
_save_context_stack = 0x1
_local_sigjmp_buf = {{__jmpbuf = {-552117431, 1640676937, -1092521468,
14569068, 14569068, 14568932, 729, 0, 228514434, 166497, 0,
8195960, 8196088, 7, 0 <repeats 13 times>, 13847224, 0, 196628,
0, 1844909312, 5178548, -1092520644, 13979392, 13979388,
14801472, 0, 8195960, 8196088, 7, 0, 8108342, 8108468, 1,
715827883, -1030792151, 0, 8195960, 729, 7, 0, 14809088,
14809088, 14542436, 0, 26303888, 0, 14568932, 3978796, 156, 0,
1, 0}, __mask_was_saved = 0, __saved_mask = {__val = {64,
7242472, 14740696, 7244624, 14809088, 14741512, 5, 14740696,
7244624, 7245864, 3982844, 14542436, 0, 14809092, 0, 26303888,
729, 14569112, 14809092, 7242472, 729, 14741512, 32, 14809088,
0, 228514434, 166497, 0, 0, 26303888, 3980968, 0}}}}
_do_rethrow = <optimized out>
using_subtxn = 228
ccxt = 0x7aae68 <my_wait_event_info>
iterstate = 0x0
prev_lsn = 26303888
specinsert = 0x0
stream_started = false
curtxn = 0x0
__func__ = "ReorderBufferProcessTXN"
#8 0x003cb460 in ReorderBufferReplay (txn=<optimized out>,
rb=rb(at)entry=0xe1f800, commit_lsn=<optimized out>, end_lsn=<optimized out>,
commit_time=715099169882112, origin_id=0, origin_lsn=0, xid=729)
at reorderbuffer.c:2641
snapshot_now = <optimized out>
#9 0x003cbedc in ReorderBufferCommit (rb=rb(at)entry=0xe1f800,
xid=xid(at)entry=729, commit_lsn=<optimized out>, end_lsn=<optimized out>,
commit_time=<optimized out>, commit_time(at)entry=715099398396546,
origin_id=<optimized out>, origin_id(at)entry=0, origin_lsn=0,
origin_lsn(at)entry=5906902891454464) at reorderbuffer.c:2665
txn = <optimized out>
#10 0x003bb19c in DecodeCommit (two_phase=false, xid=729, parsed=0xbee17478,
buf=<optimized out>, ctx=0xe1d7f8) at decode.c:682
origin_lsn = <optimized out>
commit_time = <optimized out>
origin_id = 0
i = <optimized out>
origin_lsn = <optimized out>
commit_time = <optimized out>
origin_id = <optimized out>
i = <optimized out>
#11 xact_decode (ctx=0xe1d7f8, buf=<optimized out>) at decode.c:216
xlrec = <optimized out>
parsed = {xact_time = 715099398396546, xinfo = 73, dbId = 16384,
tsId = 1663, nsubxacts = 0, subxacts = 0x0, nrels = 0,
xlocators = 0x0, nstats = 0, stats = 0x0, nmsgs = 70,
msgs = 0xe2b828, twophase_xid = 0,
twophase_gid = '\000' <repeats 199 times>, nabortrels = 0,
abortlocators = 0x0, nabortstats = 0, abortstats = 0x0,
origin_lsn = 0, origin_timestamp = 0}
xid = <optimized out>
two_phase = false
builder = <optimized out>
reorder = <optimized out>
r = <optimized out>
info = <optimized out>
__func__ = "xact_decode"
#12 0x003babf0 in LogicalDecodingProcessRecord (ctx=ctx(at)entry=0xe1d7f8,
record=0xe1dad0) at decode.c:119
buf = {origptr = 26303888, endptr = 26305088, record = 0xe1dad0}
txid = <optimized out>
rmgr = <optimized out>
#13 0x003c0390 in pg_logical_slot_get_changes_guts (fcinfo=0x0,
confirm=<optimized out>, binary=<optimized out>) at logicalfuncs.c:271
record = <optimized out>
errm = 0x0
_save_exception_stack = 0xd60380
_save_context_stack = 0x1
_local_sigjmp_buf = {{__jmpbuf = {-552117223, 1640638557, 4, 14770368,
-1092519792, -1, 14770320, 8, 1, 14691520, 0, 8195960, 8196088,
7, 0 <repeats 12 times>, 3398864, 0, 13849464, 13848680,
14650600, 3399100, 4, 3125412, 0, 144, 0, 0, 8192, 7616300, 0,
1576, 7616452, 14585296, 8192, 7616300, 14651128, 0, 0,
14651128, -1092519880, 3398864, 0, 13849464, 13848680, 3399100,
0, 5904972, 8112272, -1, 14591624, -1375937000, -1375937248,
14591376}, __mask_was_saved = 0, __saved_mask = {__val = {
14530312, 14528852, 2348328335, 14527224, 5699140, 3202447388,
4, 14527080, 5699156, 14530312, 5769228, 2918792552, 0, 0, 0,
14767888, 3067834868, 14591600, 13824008, 1023, 3068719720, 1,
184, 14589688, 14586024, 14587400, 14691504, 14586024,
14585752, 14586200, 2615480, 8112268}}}}
_do_rethrow = <optimized out>
name = 0xe16090
upto_lsn = 3933972
upto_nchanges = 14707744
rsinfo = <optimized out>
per_query_ctx = <optimized out>
oldcontext = 0xe06cc0
end_of_wal = 0
ctx = 0xe1d7f8
old_resowner = 0xd35568
arr = <optimized out>
ndim = <optimized out>
options = 0x0
p = 0xe02cb0
__func__ = "pg_logical_slot_get_changes_guts"
#14 0x00292864 in ExecMakeTableFunctionResult (setexpr=0xdea9b0,
econtext=0xde90a8, argContext=<optimized out>, expectedDesc=0x1,
randomAccess=false) at execSRF.c:234
result = 2590380
tupstore = 0x0
tupdesc = 0x0
funcrettype = 8040208
returnsTuple = <optimized out>
returnsSet = 32
fcinfo = 0xe02cb0
fcusage = {fs = 0x0, save_f_total_time = {tv_sec = 14592432,
tv_nsec = 7093408}, save_total = {tv_sec = 0, tv_nsec = 0},
f_start = {tv_sec = 14767936, tv_nsec = 14767940}}
rsinfo = {type = T_ReturnSetInfo, econtext = 0xde90a8,
expectedDesc = 0xdea7a0, allowedModes = 11,
returnMode = SFRM_Materialize, isDone = ExprSingleResult,
setResult = 0xe16548, setDesc = 0xe16338}
tmptup = {t_len = 3, t_self = {ip_blkid = {bi_hi = 0, bi_lo = 0},
ip_posid = 0}, t_tableOid = 0, t_data = 0x3}
callerContext = 0xdea7a0
first_time = true
__func__ = "ExecMakeTableFunctionResult"
... etc ...

Anything ring a bell?

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2022-08-29 15:15:52 Re: Reducing the chunk header sizes on all memory context types
Previous Message Tomas Vondra 2022-08-29 14:52:20 Re: Reducing the chunk header sizes on all memory context types