]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix leak of LLVM "fatal-on-oom" section counter.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 5 Jul 2023 10:13:13 +0000 (13:13 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 5 Jul 2023 10:14:24 +0000 (13:14 +0300)
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

src/backend/jit/llvm/llvmjit.c

index 537e0c448a18e5df956c3a93ec245995042ccb9f..67ebf6248e9e919a5433b0ed43d67b808a84c037 100644 (file)
@@ -233,6 +233,8 @@ llvm_release_context(JitContext *context)
 
                pfree(jit_handle);
        }
+
+       llvm_leave_fatal_on_oom();
 }
 
 /*