diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2023-07-05 13:13:13 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2023-07-05 13:25:59 +0300 |
commit | dc0b5841746c025f6e51b0a6ba0e423b2ac518f0 (patch) | |
tree | 91cf315bf2036082da842af9882dcd013ee3e9ef /src/backend/jit/llvm/llvmjit.c | |
parent | be8cae7e2f03f35a049e2b1f1113860fea6d0212 (diff) | |
download | postgresql-dc0b5841746c025f6e51b0a6ba0e423b2ac518f0.tar.gz postgresql-dc0b5841746c025f6e51b0a6ba0e423b2ac518f0.zip |
Fix leak of LLVM "fatal-on-oom" section counter.
llvm_release_context() called llvm_enter_fatal_on_oom(), but was missing
the corresponding llvm_leave_fatal_on_oom() call. As a result, if JIT was
used at all, we were almost always in the "fatal-on-oom" state.
It only makes a difference if you use an extension written in C++, and
run out of memory in a C++ 'new' call. In that case, you would get a
PostgreSQL FATAL error, instead of the default behavior of throwing a
C++ exception.
Back-patch to all supported versions.
Reviewed-by: Daniel Gustafsson
Discussion: https://www.postgresql.org/message-id/54b78cca-bc84-dad8-4a7e-5b56f764fab5@iki.fi
Diffstat (limited to 'src/backend/jit/llvm/llvmjit.c')
-rw-r--r-- | src/backend/jit/llvm/llvmjit.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 04ae3052a82..5c30494fa17 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -221,6 +221,8 @@ llvm_release_context(JitContext *context) } list_free(llvm_context->handles); llvm_context->handles = NIL; + + llvm_leave_fatal_on_oom(); } /* |