Re: pl/perl extension fails on Windows

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Muralikrishna Bandaru <muralikrishna(dot)bandaru(at)enterprisedb(dot)com>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: pl/perl extension fails on Windows
Date: 2024-09-14 14:42:03
Message-ID: 88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)dunslane(dot)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

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Muralikrishna Bandaru 2024-09-14 16:59:25 Re: pl/perl extension fails on Windows
Previous Message Tom Lane 2024-09-13 23:57:04 Re: BUG #18617: PostgreSQL Server Subprocess Crashes by the XPATH Function Expression with Crafted Arguments