Re: pl/perl extension fails on Windows - Mailing list pgsql-bugs
From | Muralikrishna Bandaru |
---|---|
Subject | Re: pl/perl extension fails on Windows |
Date | |
Msg-id | CA+uec8AUkXd+H+UGoY6Qm4AyASE5_J=K1TLzSufZ5JhK_7pm5A@mail.gmail.com Whole thread Raw |
In response to | Re: pl/perl extension fails on Windows (Andrew Dunstan <andrew@dunslane.net>) |
List | pgsql-bugs |
On 2024-09-12 Th 9:57 AM, Andrew Dunstan wrote:
On 2024-09-11 We 7:36 AM, Andrew Dunstan wrote:
On 2024-09-11 We 3:37 AM, Muralikrishna Bandaru wrote:On Tue, Sep 10, 2024 at 7:17 PM Andrew Dunstan <andrew@dunslane.net> wrote:
On 2024-09-10 Tu 7:51 AM, Andrew Dunstan wrote:
On 2024-09-10 Tu 6:20 AM, Muralikrishna Bandaru wrote:Hi,I built PG17 rc1 using meson on Windows with the option "-Dplperl=enabled" . When I tried to create the extension,it crashed the database.--postgres=# create extension plperl;
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.The log contains the following error.src/pl/plperl/Util.c: loadable library and perl binaries are mismatched (got first handshake key 0000000012d00080, needed 0000000012c00080)--This issue is seen with strawberry perl 5.40 not with 5.38 . The Perl that is used during compilation and on the target machine is the same.I have used strawberry perl 5.40 , which is available in the strawberry perl home page ,but 5.40 is not available in the release page . So, is it recommended to use perl 5.40 ?Please let me know if you need any other information.
We've seen similar things before. See for example:
https://postgr.es/m/20211005004334.tgjmro4kuachwiuc@alap3.anarazel.de
https://postgr.es/m/c2da86a0-2906-744c-923d-16da6047875e@dunslane.netThis looks like we are defining something we should not be, or not defining something we should be. We just need to find out what it is :-)
In the meantime, I would suggest sticking to 5.38.
Now I've had a chance to take a look I see that Strawberry 5.40 has USE_THREAD_SAFE_LOCALE defined. Can you try what happens with 5.40 if you comment out theses lines in meson.build?
if cc.get_id() == 'msvc'
# prevent binary mismatch between MSVC built plperl and Strawberry or
# msys ucrt perl libraries
perl_ccflags += ['-DNO_THREAD_SAFE_LOCALE']
endif
Hi Andrew,Thanks. I commented above lines in the meson.build file and built the installer with Strawberry 5.40 . Now able to create the extension.--c:\Program Files\PostgreSQL\17>bin\psql.exe -d postgres -p 5436
psql (17rc1)
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=#
postgres=#
postgres=# create extension plperl;--So, will this change be a part of the PG17 GA release?
Probably not. The difficulty is that it's required for some versions of perl and breaks others. We need to come up with a reliable test for it.
Maybe we need to look at the output of `perl -V` and only output the flag if it doesn't contain USE_THREAD_SAFE_LOCALE. If anyone has a better idea I am all ears.
It's kind of annoying that this could tie us so closely to a particular perl binary.
Here's a patch along the suggested lines.
Pushed. All live branches now have the new logic.
pgsql-bugs by date: