Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1spTyV-001lcc-4W for pgsql-bugs@arkaria.postgresql.org; Sat, 14 Sep 2024 14:42:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1spTyU-00EaiJ-N6 for pgsql-bugs@arkaria.postgresql.org; Sat, 14 Sep 2024 14:42:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1spTyU-00Eahi-64 for pgsql-bugs@lists.postgresql.org; Sat, 14 Sep 2024 14:42:10 +0000 Received: from mail-qv1-xf36.google.com ([2607:f8b0:4864:20::f36]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1spTyQ-0018JN-WD for pgsql-bugs@lists.postgresql.org; Sat, 14 Sep 2024 14:42:08 +0000 Received: by mail-qv1-xf36.google.com with SMTP id 6a1803df08f44-6c35334dfb1so21283356d6.0 for ; Sat, 14 Sep 2024 07:42:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1726324926; x=1726929726; darn=lists.postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=Qvt1hDIyYNyLDQ9jHp1e9FoCykbvhTDOyAuKQJbVei0=; b=0pGWRtAp/1yyeTwn2MlmqdRBdO9LvhLcVkEh786QZhhRKdzk96uiy5mnoyGEKSrskM kqUIpSUu/mEk5jdPgw1cnCsa0KiHqs+mP+llnA/8i1BB2qMAF4OQfFVVCwmib+qgptVT tYxDz9OYwIMHHVLaFzi/rdpvTXB+Qf7vIUTBSZ+qUTXDBycaCbHRskRqb+iLj/dq3L9a WwCzJHJLYO2q17L13JxkEwCX6NRR9DKQMtBR2DjQQM2rYO50Ux+XGBGmb0vVNmATvzQ2 pbiV9g0+sbx2J+VmJipXbbKDwiJDr07c5TdMY4V8qX07RSdtxiCW31R6Zo7dCIePNEgM 5S6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726324926; x=1726929726; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Qvt1hDIyYNyLDQ9jHp1e9FoCykbvhTDOyAuKQJbVei0=; b=Fy86ZB09lsPjzN+sxackM3iA9uLIZv8GVK2cc18QlCLNpM8CxefUCe9TttQf4Caz7o EAQQVWsO5yUrHgm+Q/Vw0n2bdpyijU56LmVAx49dMRS7uNht0TyXt1E4ISt7+Ga1c+Rp QsIFX/X3A3byt1lh8MaY2OcbVVVPrIuGFgZ7HocpOfkc3j2GPxLszy2UWagb9ZxlD7as s4v37P9VLvONjIAGZAqVJ7EwfG/dFmZv7L931SJ1tWpeNi8c3+zRfVf1kFFZS1ZhBEvu C8GrSzyBKL+YL4PyVLq/OzBm+UccssxlKQWQ8IFUWaFoIEqabLdyM35luZRqURkVGyv7 iA/g== X-Gm-Message-State: AOJu0YxNt5CDn2e17TWdHplP8DilcmeTODBAV9NJEedJ1kt+MrXkWSIK uyEYtGCxK2kABeLZYrBHuRpvBfcY3n7NozEu3V7frOO2ZlBVDZuc13EvzZeq78SVgfyqpsEfT99 Q X-Google-Smtp-Source: AGHT+IH62UZKixG10EPz7/3rZlAmhFtZ5SK+uF5M3CclldqcLeJ2cAdbDKkbfsMcq7y4ISix+Le6mw== X-Received: by 2002:a05:6214:5d87:b0:6c5:50ee:a64c with SMTP id 6a1803df08f44-6c57357a745mr145247776d6.34.1726324925688; Sat, 14 Sep 2024 07:42:05 -0700 (PDT) Received: from ?IPV6:2605:a601:9180:9800::2bb? ([2605:a601:9180:9800::2bb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-6c58c7b2ec0sm7453236d6.119.2024.09.14.07.42.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 14 Sep 2024 07:42:05 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------a0n9VavaxpjGyzCeV0csLoTQ" Message-ID: <88d3da75-5278-43f2-b158-e300aafe9304@dunslane.net> Date: Sat, 14 Sep 2024 10:42:03 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pl/perl extension fails on Windows From: Andrew Dunstan To: Muralikrishna Bandaru Cc: pgsql-bugs@lists.postgresql.org References: <35af00d5-0cc6-4c22-9367-5af3b50ee96b@dunslane.net> <11f06540-85a8-4fbc-8922-b03bf9ef92b7@dunslane.net> Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------a0n9VavaxpjGyzCeV0csLoTQ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 >>> 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.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 --------------a0n9VavaxpjGyzCeV0csLoTQ Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


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.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
--------------a0n9VavaxpjGyzCeV0csLoTQ--