pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Andrew Dunstan <andrew@dunslane.net>
To: Muralikrishna Bandaru <muralikrishna.bandaru@enterprisedb.com>
Cc: pgsql-bugs@lists.postgresql.org
Subject: Re: pl/perl extension fails on Windows
Date: Sat, 14 Sep 2024 10:42:03 -0400
Message-ID: <88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net> (raw)
In-Reply-To: <d9feccde-5e6a-4061-b8d0-d92f220127a1@dunslane.net>
References: <CA+uec8DHo92L25mac6=yrZTcP6wAnmkMbxqk47RfCf3MzY39fA@mail.gmail.com>
	<35af00d5-0cc6-4c22-9367-5af3b50ee96b@dunslane.net>
	<11f06540-85a8-4fbc-8922-b03bf9ef92b7@dunslane.net>
	<CA+uec8BargUS9vhj_mrScfnbO6tRbhLJf9bDbXgxwx3Y5f_L0A@mail.gmail.com>
	<aea5b741-701d-420d-955a-148b7d112a85@dunslane.net>
	<d9feccde-5e6a-4061-b8d0-d92f220127a1@dunslane.net>


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 <https://strawberryperl.com/> ,but 
>>>>>     5.40 is not available in the release page
>>>>>     <https://strawberryperl.com/releases.html; . 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.net
>>>>
>>>>     This 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.


cheers


andrew

--
Andrew Dunstan
EDB:https://www.enterprisedb.com

view thread (8+ messages)  latest in thread

Message-ID: <88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net>
Permalink:  ../88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net/
Also on:    postgresql.org/message-id/88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: andrew@dunslane.net, muralikrishna.bandaru@enterprisedb.com, pgsql-bugs@lists.postgresql.org
  Subject: Re: pl/perl extension fails on Windows
  In-Reply-To: <88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox