pg13.2: invalid memory alloc request size NNNN - Mailing list pgsql-hackers
From | Justin Pryzby |
---|---|
Subject | pg13.2: invalid memory alloc request size NNNN |
Date | |
Msg-id | 20210212014837.GE1793@telsasoft.com Whole thread Raw |
Responses |
Re: pg13.2: invalid memory alloc request size NNNN
Re: pg13.2: invalid memory alloc request size NNNN |
List | pgsql-hackers |
ts=# \errverbose ERROR: XX000: invalid memory alloc request size 18446744073709551613 #0 pg_re_throw () at elog.c:1716 #1 0x0000000000a33b12 in errfinish (filename=0xbff20e "mcxt.c", lineno=959, funcname=0xbff2db <__func__.6684> "palloc")at elog.c:502 #2 0x0000000000a6760d in palloc (size=18446744073709551613) at mcxt.c:959 #3 0x00000000009fb149 in text_to_cstring (t=0x2aaae8023010) at varlena.c:212 #4 0x00000000009fbf05 in textout (fcinfo=0x2094538) at varlena.c:557 #5 0x00000000006bdd50 in ExecInterpExpr (state=0x2093990, econtext=0x20933d8, isnull=0x7fff5bf04a87) at execExprInterp.c:1112 #6 0x00000000006d4f18 in ExecEvalExprSwitchContext (state=0x2093990, econtext=0x20933d8, isNull=0x7fff5bf04a87) at ../../../src/include/executor/executor.h:316 #7 0x00000000006d4f81 in ExecProject (projInfo=0x2093988) at ../../../src/include/executor/executor.h:350 #8 0x00000000006d5371 in ExecScan (node=0x20932c8, accessMtd=0x7082e0 <SeqNext>, recheckMtd=0x708385 <SeqRecheck>) at execScan.c:238 #9 0x00000000007083c2 in ExecSeqScan (pstate=0x20932c8) at nodeSeqscan.c:112 #10 0x00000000006d1b00 in ExecProcNodeInstr (node=0x20932c8) at execProcnode.c:466 #11 0x00000000006e742c in ExecProcNode (node=0x20932c8) at ../../../src/include/executor/executor.h:248 #12 0x00000000006e77de in ExecAppend (pstate=0x2089208) at nodeAppend.c:267 #13 0x00000000006d1b00 in ExecProcNodeInstr (node=0x2089208) at execProcnode.c:466 #14 0x000000000070964f in ExecProcNode (node=0x2089208) at ../../../src/include/executor/executor.h:248 #15 0x0000000000709795 in ExecSort (pstate=0x2088ff8) at nodeSort.c:108 #16 0x00000000006d1b00 in ExecProcNodeInstr (node=0x2088ff8) at execProcnode.c:466 #17 0x00000000006d1ad1 in ExecProcNodeFirst (node=0x2088ff8) at execProcnode.c:450 #18 0x00000000006dec36 in ExecProcNode (node=0x2088ff8) at ../../../src/include/executor/executor.h:248 #19 0x00000000006df079 in fetch_input_tuple (aggstate=0x2088a20) at nodeAgg.c:589 #20 0x00000000006e1fad in agg_retrieve_direct (aggstate=0x2088a20) at nodeAgg.c:2368 #21 0x00000000006e1bfd in ExecAgg (pstate=0x2088a20) at nodeAgg.c:2183 #22 0x00000000006d1b00 in ExecProcNodeInstr (node=0x2088a20) at execProcnode.c:466 #23 0x00000000006d1ad1 in ExecProcNodeFirst (node=0x2088a20) at execProcnode.c:450 #24 0x00000000006c6ffa in ExecProcNode (node=0x2088a20) at ../../../src/include/executor/executor.h:248 #25 0x00000000006c966b in ExecutePlan (estate=0x2032f48, planstate=0x2088a20, use_parallel_mode=false, operation=CMD_SELECT,sendTuples=true, numberTuples=0, direction=ForwardScanDirection, dest=0xbb3400 <donothingDR>, execute_once=true) at execMain.c:1632 #3 0x00000000009fb149 in text_to_cstring (t=0x2aaae8023010) at varlena.c:212 212 result = (char *) palloc(len + 1); (gdb) l 207 /* must cast away the const, unfortunately */ 208 text *tunpacked = pg_detoast_datum_packed(unconstify(text *, t)); 209 int len = VARSIZE_ANY_EXHDR(tunpacked); 210 char *result; 211 212 result = (char *) palloc(len + 1); (gdb) p len $1 = -4 This VM had some issue early today and I killed the VM, causing PG to execute recovery. I'm tentatively blaming that on zfs, so this could conceivably be a data error (although recovery supposedly would have resolved it). I just checked and data_checksums=off. The query has mode(), string_agg(), distinct. Here's a redacted plan for the query: GroupAggregate (cost=15681340.44..20726393.56 rows=908609 width=618) Group Key: (((COALESCE(a.ii, $0) || lpad(a.ii, 5, '0'::text)) || lpad(a.ii, 5, '0'::text))), a.ii, (COALESCE(a.ii, $2)),(CASE (a.ii)::integer WHEN 1 THEN 'qq'::text WHEN 2 THEN 'qq'::text WHEN 3 THEN 'qq'::text WHEN 4 THEN 'qq'::text WHEN5 THEN 'qq qq'::text WHEN 6 THEN 'qq-qq'::text ELSE a.ii END), (CASE WHEN (COALESCE(a.ii, $3) = substr(a.ii, 1, length(COALESCE(a.ii,$4)))) THEN 'qq qq'::text WHEN (hashed SubPlan 7) THEN 'qq qq'::text ELSE 'qq qq qq'::text END) InitPlan 1 (returns $0) -> Seq Scan on d InitPlan 3 (returns $2) -> Seq Scan on d d InitPlan 4 (returns $3) -> Seq Scan on d d InitPlan 5 (returns $4) -> Seq Scan on d d InitPlan 6 (returns $5) -> Seq Scan on d d -> Sort (cost=15681335.39..15704050.62 rows=9086093 width=313) Sort Key: (((COALESCE(a.ii, $0) || lpad(a.ii, 5, '0'::text)) || lpad(a.ii, 5, '0'::text))), a.ii, (COALESCE(a.ii,$2)), (CASE (a.ii)::integer WHEN 1 THEN 'qq'::text WHEN 2 THEN 'qq'::text WHEN 3 THEN 'qq'::text WHEN 4 THEN'qq'::text WHEN 5 THEN 'qq qq'::text WHEN 6 THEN 'qq-qq'::text ELSE a.ii END), (CASE WHEN (COALESCE(a.ii, $3) = substr(a.ii,1, length(COALESCE(a.ii, $4)))) THEN 'qq qq'::text WHEN (hashed SubPlan 7) THEN 'qq qq'::text ELSE 'qq qq qq'::textEND) -> Append (cost=1.01..13295792.30 rows=9086093 width=313) -> Seq Scan on a a (cost=1.01..5689033.34 rows=3948764 width=328) Filter: ((ii >= '2021-02-10 00:00:00+10'::timestamp with time zone) AND (ii < '2021-02-11 00:00:00+10'::timestampwith time zone)) SubPlan 7 -> Seq Scan on d d (cost=0.00..1.01 rows=1 width=7) -> Seq Scan on b (cost=1.01..12.75 rows=1 width=417) Filter: ((ii >= '2021-02-10 00:00:00+10'::timestamp with time zone) AND (ii < '2021-02-11 00:00:00+10'::timestampwith time zone)) SubPlan 11 -> Seq Scan on d d (cost=0.00..1.01 rows=1 width=7) -> Seq Scan on c c (cost=1.01..7561315.74 rows=5137328 width=302) Filter: ((ii >= '2021-02-10 00:00:00+10'::timestamp with time zone) AND (ii < '2021-02-11 00:00:00+10'::timestampwith time zone)) SubPlan 14 -> Seq Scan on d d (cost=0.00..1.01 rows=1 width=7) I restored to a test cluster, but so far not able to reproduce the issue there, so I'm soliciting suggestions how to debug it further. -- Justin
pgsql-hackers by date: