#0 ensure_record_cache_typmod_slot_exists (typmod=0) at typcache.c:1714
#1 0x000000000091185b in assign_record_type_typmod (tupDesc=<optimized out>, tupDesc@entry=0x27bc738) at
typcache.c:2001
#2 0x000000000091df03 in internal_get_result_type (funcid=<optimized out>, call_expr=<optimized out>,
rsinfo=<optimizedout>,
resultTypeId=<optimized out>, resultTupleDesc=0x7ffc9dff8cd0) at funcapi.c:393
#3 0x000000000091e263 in get_expr_result_type (expr=expr@entry=0x2792798,
resultTypeId=resultTypeId@entry=0x7ffc9dff8ccc,
resultTupleDesc=resultTupleDesc@entry=0x7ffc9dff8cd0) at funcapi.c:230
#4 0x00000000006a2fa5 in ExecInitFunctionScan (node=node@entry=0x273afa8, estate=estate@entry=0x269e948,
eflags=eflags@entry=16)at nodeFunctionscan.c:370
#5 0x000000000069084e in ExecInitNode (node=node@entry=0x273afa8, estate=estate@entry=0x269e948,
eflags=eflags@entry=16)at execProcnode.c:255
#6 0x000000000068a96d in InitPlan (eflags=16, queryDesc=0x273b2d8) at execMain.c:936
#7 standard_ExecutorStart (queryDesc=0x273b2d8, eflags=16) at execMain.c:263
#8 0x00007f67c2821d5d in pgss_ExecutorStart (queryDesc=0x273b2d8, eflags=<optimized out>) at pg_stat_statements.c:965
#9 0x00000000007fc226 in PortalStart (portal=portal@entry=0x26848b8, params=params@entry=0x0, eflags=eflags@entry=0,
snapshot=snapshot@entry=0x0)
at pquery.c:514
#10 0x00000000007fa27f in exec_bind_message (input_message=0x7ffc9dff90d0) at postgres.c:1995
#11 PostgresMain (argc=argc@entry=1, argv=argv@entry=0x7ffc9dff9370, dbname=<optimized out>, username=<optimized out>)
atpostgres.c:4552
#12 0x000000000077a4ea in BackendRun (port=<optimized out>, port=<optimized out>) at postmaster.c:4537
#13 BackendStartup (port=<optimized out>) at postmaster.c:4259
#14 ServerLoop () at postmaster.c:1745
#15 0x000000000077b363 in PostmasterMain (argc=argc@entry=5, argv=argv@entry=0x256abc0) at postmaster.c:1417
#16 0x00000000004fec63 in main (argc=5, argv=0x256abc0) at main.c:209
(gdb) p RecordCacheArrayLen
$1 = 0
(gdb) p RecordCacheArrayLen
$2 = 0
(gdb) p RecordCacheArrayLen
$3 = 0
-----Original Message-----
From: Thomas Munro <thomas.munro@gmail.com>
Sent: Thursday, September 7, 2023 5:31 PM
To: James Pang (chaolpan) <chaolpan@cisco.com>
Cc: Michael Paquier <michael@paquier.xyz>; PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Subject: Re: FW: query pg_stat_ssl hang 100%cpu
> #0 ensure_record_cache_typmod_slot_exists (typmod=0) at
> typcache.c:1714
Are you able to print out the value of global variable RecordCacheArrayLen? I wonder if this loop in
ensure_record_cache_typmod_slot_exists() is not terminating:
int32 newlen = RecordCacheArrayLen * 2;
while (typmod >= newlen)
newlen *= 2;