Re: terminate called after throwing an instance of 'std::bad_alloc'

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2021-04-20T05:38:26Z
Lists: pgsql-hackers
I don't know if this is related to the other issues, but this seems leaky.

create or replace function fn() returns void language plpgsql as $$ declare rec int; begin SELECT relpages INTO rec FROM pg_class LIMIT 1; end $$;
explain analyze
SELECT fn()
FROM generate_series(1,999);

PGOPTIONS='-cclient_min_messages=debug -clog_executor_stats=on -clog_min_duration_statement=-1 -cjit=on -cjit_above_cost=0 -cjit_inline_above_cost=0' psql ts -f jitleak.sql
!       70172 kB max resident size

PGOPTIONS='-cclient_min_messages=debug -clog_executor_stats=on -clog_min_duration_statement=-1 -cjit=on -cjit_above_cost=0 -cjit_inline_above_cost=-1' psql ts -f jitleak.sql
!       25672 kB max resident size



Commits

  1. llvmjit: Use explicit LLVMContextRef for inlining