Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
От | Yuri Zamyatin |
---|---|
Тема | Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade |
Дата | |
Msg-id | hduw2vt7l5ojmgcnophhqvffmcz4nqdzjs6hgx3nkggdyvtkyu@6jq72jymcj3a обсуждение исходный текст |
Ответ на | Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade (Jeff Davis <pgsql@j-davis.com>) |
Ответы |
Re: BUG #19078: Segfaults in tts_minimal_store_tuple() following pg_upgrade
|
Список | 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 по дате отправления: