I found this in our logs, and reproduced it under v11-v16.
CREATE TABLE t(a int, b int);
INSERT INTO t SELECT generate_series(1,999);
CREATE STATISTICS t_stats ON a,b FROM t;
while :; do psql postgres -qtxc "ANALYZE t"; done &
while :; do psql postgres -qtxc "begin; DROP STATISTICS t_stats"; done &
It's known that concurrent DDL can hit elog(). But in this case,
there's only one DDL operation.
(gdb) bt
#0 0x00000000009442a0 in pg_re_throw ()
#1 0x0000000000943504 in errfinish ()
#2 0x00000000004fcafe in simple_heap_delete ()
#3 0x0000000000639d3f in RemoveStatisticsDataById ()
#4 0x0000000000639d79 in RemoveStatisticsById ()
#5 0x000000000057a428 in deleteObjectsInList ()
#6 0x000000000057a8f0 in performMultipleDeletions ()
#7 0x000000000060b5ed in RemoveObjects ()
#8 0x00000000008099ce in ProcessUtilitySlow.isra.1 ()
#9 0x0000000000808c71 in standard_ProcessUtility ()
#10 0x00007efbfed7a508 in pgss_ProcessUtility () from /usr/pgsql-16/lib/pg_stat_statements.so
#11 0x000000000080745a in PortalRunUtility ()
#12 0x0000000000807579 in PortalRunMulti ()
#13 0x00000000008079dc in PortalRun ()
#14 0x0000000000803927 in exec_simple_query ()
#15 0x0000000000803f28 in PostgresMain ()
#16 0x000000000077bae6 in ServerLoop ()
#17 0x000000000077cbaa in PostmasterMain ()
#18 0x00000000004ba788 in main ()
--
Justin