Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade - Mailing list pgsql-bugs
From | Yuri Zamyatin |
---|---|
Subject | Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade |
Date | |
Msg-id | hduw2vt7l5ojmgcnophhqvffmcz4nqdzjs6hgx3nkggdyvtkyu@6jq72jymcj3a Whole thread Raw |
In response to | Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade (Jeff Davis <pgsql@j-davis.com>) |
Responses |
Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
|
List | pgsql-bugs |
Haven't managed to reproduce it consistently so far. Perhaps we could use the existing dump to investigate. I'm unfamiliar with Postgres internals. If it would be useful, could you walk me through the structures I need to capture? > (gdb) frame 2 > #2 0x0000555fe8566ec2 in agg_retrieve_hash_table_in_memory (aggstate=aggstate@entry=0x55601c7567d0) at ./build/../src/include/executor/executor.h:176 > 176 in ./build/../src/include/executor/executor.h > (gdb) print *perhash > $83 = {hashtable = 0x55601c182ac8, hashiter = {cur = 10, end = 43, done = false}, hashslot = 0x55601c765bb0, hashfunctions= 0x55601c765b28, > eqfuncoids = 0x55601c765b18, numCols = 2, numhashGrpCols = 2, largestGrpColIdx = 4, hashGrpColIdxInput = 0x55601c7659f0,hashGrpColIdxHash = 0x55601c765a00, > aggnode = 0x55601eba19f8} > (gdb) print *hashtable->hashtab > $84 = {size = 16, members = 4, sizemask = 15, grow_threshold = 14, data = 0x55601c182b98, ctx = 0x55601c1819b0, private_data= 0x55601c182ac8} > (gdb) print *entry > $86 = {firstTuple = 0x1b, status = 1, hash = 21856} Does it look suspicious? perhash->hashiter->end=43, hashtable->hashtab->size=16, 43-16=0x1b Some more details from that step: > (gdb) info locals > hashslot = 0x55601c765bb0 > hashtable = 0x55601c182ac8 > i = <optimized out> > econtext = 0x55601c756f00 > peragg = 0x55601c765198 > pergroup = <optimized out> > entry = 0x55601c182e48 > firstSlot = 0x55601c763e48 > result = <optimized out> > perhash = 0x55601c764e50 > (gdb) print *aggstate > $87 = {ss = {ps = {type = T_AggState, plan = 0x55601eb9bb18, state = 0x55601b1a60a8, ExecProcNode = 0x555fe8567890 <ExecAgg>, > ExecProcNodeReal = 0x555fe8567890 <ExecAgg>, instrument = 0x0, worker_instrument = 0x0, worker_jit_instrument = 0x0,qual = 0x0, lefttree = 0x55601c757008, > righttree = 0x0, initPlan = 0x0, subPlan = 0x0, chgParam = 0x0, ps_ResultTupleDesc = 0x55601c763f50, ps_ResultTupleSlot= 0x55601c764758, > ps_ExprContext = 0x55601c756f00, ps_ProjInfo = 0x55601c764860, async_capable = false, scandesc = 0x55601c762fa0,scanops = 0x555fe8bd0f20 <TTSOpsVirtual>, > outerops = 0x555fe8bd0f20 <TTSOpsVirtual>, innerops = 0x0, resultops = 0x555fe8bd0f20 <TTSOpsVirtual>, scanopsfixed= true, outeropsfixed = true, > inneropsfixed = false, resultopsfixed = true, scanopsset = true, outeropsset = true, inneropsset = false, resultopsset= true}, ss_currentRelation = 0x0, > ss_currentScanDesc = 0x0, ss_ScanTupleSlot = 0x55601c763e48}, aggs = 0x55601c7628a8, numaggs = 1, numtrans = 1, aggstrategy= AGG_HASHED, > aggsplit = AGGSPLIT_SIMPLE, phase = 0x55601c764d70, numphases = 1, current_phase = 0, peragg = 0x55601c765198, pertrans= 0x55601c765220, > hashcontext = 0x55601c756df8, aggcontexts = 0x55601c756bd8, tmpcontext = 0x55601c756be8, curaggcontext = 0x55601c756df8,curperagg = 0x0, > curpertrans = 0x55601c765220, input_done = false, agg_done = false, projected_set = -1, current_set = 1, grouped_cols= 0x55601c765040, > all_grouped_cols = 0x55601c7650b8, colnos_needed = 0x55601c7656b0, max_colno_needed = 9, all_cols_needed = true, maxsets= 1, phases = 0x55601c764d70, sort_in = 0x0, > sort_out = 0x0, sort_slot = 0x0, pergroups = 0x0, grp_firstTuple = 0x0, table_filled = true, num_hashes = 4, hash_metacxt= 0x55601c1819b0, > hash_tablecxt = 0x55601c1839c0, hash_tapeset = 0x0, hash_spills = 0x0, hash_spill_rslot = 0x55601c765470, hash_spill_wslot= 0x55601c765578, hash_batches = 0x0, > hash_ever_spilled = false, hash_spill_mode = false, hash_mem_limit = 2147483648, hash_ngroups_limit = 10324440, hash_planned_partitions= 0, > hashentrysize = 138.26865671641792, hash_mem_peak = 81920, hash_ngroups_current = 67, hash_disk_used = 0, hash_batches_used= 1, perhash = 0x55601c764df8, > hash_pergroup = 0x55601c765428, all_pergroups = 0x55601c765428, shared_info = 0x0} > (gdb) print *hashslot > $88 = {type = T_TupleTableSlot, tts_flags = 24, tts_nvalid = 0, tts_ops = 0x555fe8bd0e20 <TTSOpsMinimalTuple>, tts_tupleDescriptor= 0x55601c765a10, > tts_values = 0x55601c765c20, tts_isnull = 0x55601c765c30, tts_mcxt = 0x55601b1a5fb0, tts_tid = {ip_blkid = {bi_hi = 65535,bi_lo = 65535}, ip_posid = 0}, > tts_tableOid = 0} > (gdb) print *hashtable > $89 = {hashtab = 0x55601c182b50, numCols = 2, keyColIdx = 0x55601c765a00, tab_hash_expr = 0x55601c182eb0, tab_eq_func =0x55601c1833e8, > tab_collations = 0x55601eba1b20, tablecxt = 0x55601c1839c0, tempcxt = 0x55601c17b980, additionalsize = 16, tableslot= 0x55601c182da8, inputslot = 0x55601c765bb0, > in_hash_expr = 0x55601c182eb0, cur_eq_func = 0x55601c1833e8, exprcontext = 0x55601c14b7f8} > (gdb) print *econtext > $90 = {type = T_ExprContext, ecxt_scantuple = 0x0, ecxt_innertuple = 0x0, ecxt_outertuple = 0x55601c763e48, ecxt_per_query_memory= 0x55601b1a5fb0, > ecxt_per_tuple_memory = 0x55601c1859d0, ecxt_param_exec_vals = 0x55601b42bcf0, ecxt_param_list_info = 0x55601b0f7a78,ecxt_aggvalues = 0x55601c762e88, > ecxt_aggnulls = 0x55601c765188, caseValue_datum = 0, caseValue_isNull = true, domainValue_datum = 0, domainValue_isNull= true, ecxt_oldtuple = 0x0, > ecxt_newtuple = 0x0, ecxt_estate = 0x55601b1a60a8, ecxt_callbacks = 0x0} > (gdb) print *peragg > $91 = {aggref = 0x55601eb9c170, transno = 0, finalfn_oid = 0, finalfn = {fn_addr = 0x0, fn_oid = 0, fn_nargs = 0, fn_strict= false, fn_retset = false, > fn_stats = 0 '\000', fn_extra = 0x0, fn_mcxt = 0x0, fn_expr = 0x0}, numFinalArgs = 1, aggdirectargs = 0x0, resulttypeLen= 4, resulttypeByVal = true, > shareable = false} > (gdb) print *firstSlot > $92 = {type = T_TupleTableSlot, tts_flags = 16, tts_nvalid = 9, tts_ops = 0x555fe8bd0f20 <TTSOpsVirtual>, tts_tupleDescriptor= 0x55601c762fa0, > tts_values = 0x55601c763e90, tts_isnull = 0x55601c763ed8, tts_mcxt = 0x55601b1a5fb0, tts_tid = {ip_blkid = {bi_hi = 65535,bi_lo = 65535}, ip_posid = 0}, > tts_tableOid = 0}
pgsql-bugs by date: