Thread: BUG #17929: LLVMBuildGEP: symbol not found

BUG #17929: LLVMBuildGEP: symbol not found

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      17929
Logged by:          Nikolas Mauropoulos
Email address:      nikmaurop@gmail.com
PostgreSQL version: 12.15
Operating system:   Alpine (container)
Description:

After our container updated to 12.15-alpine there's an error
2023-05-12 05:35:40.212 GMT [58509] STATEMENT:  select item_id from
flatitemsversions_view where parent_item_id = $1
2023-05-12 05:35:40.212 GMT [58494] ERROR:  could not load library
"/usr/local/lib/postgresql/llvmjit.so": Error relocating
/usr/local/lib/postgresql/llvmjit.so: LLVMBuildGEP: symbol not found

this is not present on 12.14-bullseye


Re: BUG #17929: LLVMBuildGEP: symbol not found

From
Thomas Munro
Date:
On Sat, May 13, 2023 at 12:15 AM PG Bug reporting form
<noreply@postgresql.org> wrote:
> The following bug has been logged on the website:
>
> Bug reference:      17929
> Logged by:          Nikolas Mauropoulos
> Email address:      nikmaurop@gmail.com
> PostgreSQL version: 12.15
> Operating system:   Alpine (container)
> Description:
>
> After our container updated to 12.15-alpine there's an error
> 2023-05-12 05:35:40.212 GMT [58509] STATEMENT:  select item_id from
> flatitemsversions_view where parent_item_id = $1
> 2023-05-12 05:35:40.212 GMT [58494] ERROR:  could not load library
> "/usr/local/lib/postgresql/llvmjit.so": Error relocating
> /usr/local/lib/postgresql/llvmjit.so: LLVMBuildGEP: symbol not found
>
> this is not present on 12.14-bullseye

I am not familiar with Alpine or any of the packaging and versioning
details over there, but I guess this is a basic version mismatch where
you're somehow using LLVM 16 libraries with a version of PostgreSQL
built for LLVM 15 or earlier.  I'm working on updating PostgreSQL to
work with LLVM 16 at present (and starting to get close to sharing a
patch on the -hackers list) where we switch over to using
LLVMBuildGEP2 and other new C API changes with '2' bolted onto the
name, where you have to supply more type information when building IR,
but that'll only work for you if your PostgreSQL was actually built
against LLVM 16, so I think your problem is basic version mismatch.
You could simply turn jit off to avoid the error.



Re: BUG #17929: LLVMBuildGEP: symbol not found

From
Nikolas Mauropoulos
Date:
I'm not the original maintainer of the Docker image, so I guess that would be the team at docker themselves? 


Στις Παρ 12 Μαΐ 2023 στις 9:44 μ.μ., ο/η Thomas Munro <thomas.munro@gmail.com> έγραψε:
On Sat, May 13, 2023 at 12:15 AM PG Bug reporting form
<noreply@postgresql.org> wrote:
> The following bug has been logged on the website:
>
> Bug reference:      17929
> Logged by:          Nikolas Mauropoulos
> Email address:      nikmaurop@gmail.com
> PostgreSQL version: 12.15
> Operating system:   Alpine (container)
> Description:
>
> After our container updated to 12.15-alpine there's an error
> 2023-05-12 05:35:40.212 GMT [58509] STATEMENT:  select item_id from
> flatitemsversions_view where parent_item_id = $1
> 2023-05-12 05:35:40.212 GMT [58494] ERROR:  could not load library
> "/usr/local/lib/postgresql/llvmjit.so": Error relocating
> /usr/local/lib/postgresql/llvmjit.so: LLVMBuildGEP: symbol not found
>
> this is not present on 12.14-bullseye

I am not familiar with Alpine or any of the packaging and versioning
details over there, but I guess this is a basic version mismatch where
you're somehow using LLVM 16 libraries with a version of PostgreSQL
built for LLVM 15 or earlier.  I'm working on updating PostgreSQL to
work with LLVM 16 at present (and starting to get close to sharing a
patch on the -hackers list) where we switch over to using
LLVMBuildGEP2 and other new C API changes with '2' bolted onto the
name, where you have to supply more type information when building IR,
but that'll only work for you if your PostgreSQL was actually built
against LLVM 16, so I think your problem is basic version mismatch.
You could simply turn jit off to avoid the error.