Do not inline functions which access TLS in LLVM JIT, as this leads to crashes with unsupported relocation error diff --git src/backend/jit/llvm/llvmjit_inline.cpp src/backend/jit/llvm/llvmjit_inline.cpp index 2617a46..a063edb 100644 --- src/backend/jit/llvm/llvmjit_inline.cpp +++ src/backend/jit/llvm/llvmjit_inline.cpp @@ -608,6 +608,16 @@ function_inlinable(llvm::Function &F, if (rv->materialize()) elog(FATAL, "failed to materialize metadata"); + /* + * Don't inline functions with thread-local variables until + * related crashes are investigated (see BUG #16696) + */ + if (rv->isThreadLocal()) { + ilog(DEBUG1, "cannot inline %s due to thread-local variable %s", + F.getName().data(), rv->getName().data()); + return false; + } + /* * Never want to inline externally visible vars, cheap enough to * reference.