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.96) (envelope-from ) id 1wH0xu-006n90-22 for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Apr 2026 15:00:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wH0xt-00ARqU-2M for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Apr 2026 15:00:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wH0xt-00ARqL-0j for pgsql-hackers@lists.postgresql.org; Sun, 26 Apr 2026 15:00:09 +0000 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wH0xq-00000003B1H-1hzx for pgsql-hackers@postgresql.org; Sun, 26 Apr 2026 15:00:08 +0000 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-5a402b2d102so9991920e87.3 for ; Sun, 26 Apr 2026 08:00:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777215604; x=1777820404; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=XikgZJrR+emvjg7Nqz+7CMyfbyAMl5Aak8bEDMsW+vs=; b=m+whLvR7Fx3KkF9gkdAlD58vGMceqAI05JlafMyWrWXOP9vec2Kan92tAgrDoWsfBx jQC1rM/96g6WD6gtYMO6PukEb19WfG+Rae8xKO90dFX02xQ7CIgjaLMAuVGzgmX7EOlU bZTDdULWVGTsfBo4BdK0Lb8d7Dj3dxqsqi3IBMyUFbFvjnpytSbDCy0yIS/MH565Fh3v hmP91NC3n9r4Fb7Jo5UIYk4bHQDsh5hFbhRi5/MB+/2skvIfauT8yEqEEH5byrFdBVXI qUpA19SvqHrNPnsIYf48IFra+vPlqhrzOC1nzovumYOVtv4zFdkh5vzzgJXJMnJWfYIm qbcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777215604; x=1777820404; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=XikgZJrR+emvjg7Nqz+7CMyfbyAMl5Aak8bEDMsW+vs=; b=SfBXLvvy19FOE4LrS1yiXj7B+cUclhcCdoUOloyItQzC7oWsyL/Cz0G9IpYKKZlviJ GZ7gQGHRHqaBOJWLBn9ZDLxjD//ji0lcc+IoIg7M8gZbG8ADPucvTGGZPqbRButqm8qp JlRHMfv8WqHQQT2dT5n18WWDnxYmWf8Nsai7saqJowvXjqB/OzuAThBzHfwNUN/WcZwZ ObKIIlUfX5PNAxqAFF+WM5DfArg4C5AOU0UNVCD1adZuOVtmYtev1cyvUJ/kq0DUNBzh BSyIhSZjvV0NjNFP589lKwTIJlBlCSDDuIu3FP2Kx4sl292+rPXZ+eStGqEFs/dsUTiY UZ/A== X-Gm-Message-State: AOJu0YymerteeTp9CAoF+GVV74nooU1mXAcfUnObifHHI9bvDtD/4yx1 kFfriRW/uyRBR6x/O1lcCcQf3iKZ4DaLM/cPJzPMVfV2EQAsDBbVTi7/pcBc2w== X-Gm-Gg: AeBDiev7aEnoR/AKdzO9UguNWp7it6o0mcTaDWmTEEcVydlGuXSztn2tm1Qhl63AhrH n7VMWNOhakMK4z5tZ/WSrIyYTi5j5za2HAI3VVZSU4BRXs9+kcHFp3reG7v3xbZgfCDGiUVTr6B Y/8cjy9KhCRAY+Fquwi7KYohx7tHookrBdRZ+7bVrjBEvm1q8KiuXc/16oh+Wrwk1DT2oxGaHwf FvZM10qH9U63RvoOg1HqlSIiqEk9/XwejUQqqPo62BnMsTa1LU+i0G1q2ZOn0aWkbvAvCtgZ5hT fB1KhMnPYMMuvJI4eM01tVid8ZT27zIHRLEmLXNn1JS6fPJ8eKSsPI6qzMJ3t6J63FrQlnA5FXR ZLRjhpCX2Y+HzPQH8yJUx3R3K1FGCj2DFDiIOw3oDlk3MWt+eekbDCw3R61LLikUtNphb8xBho6 joPwG72QPGrHAd604Jr4RRCXXF626Gy15sC8Y= X-Received: by 2002:a05:6512:692:b0:5a2:c742:7a76 with SMTP id 2adb3069b0e04-5a4172f289dmr16199243e87.44.1777215603406; Sun, 26 Apr 2026 08:00:03 -0700 (PDT) Received: from [192.168.0.50] ([89.149.68.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a4187e10e6sm7519787e87.40.2026.04.26.08.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 26 Apr 2026 08:00:02 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------7XpVslWD6FQ1s5vuuMg09bsv" Message-ID: <41b8c2d3-b86c-45f5-a198-4889c22665e0@gmail.com> Date: Sun, 26 Apr 2026 18:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Yet another way for pg_ctl stop to fail on Windows To: Noah Misch Cc: pgsql-hackers References: <20240907181143.11.nmisch@google.com> <20240908165355.93.nmisch@google.com> Content-Language: en-US From: Alexander Lakhin In-Reply-To: <20240908165355.93.nmisch@google.com> 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. --------------7XpVslWD6FQ1s5vuuMg09bsv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello Noah, 08.09.2024 19:53, Noah Misch wrote: > I see Microsoft suggests WaitNamedPipeA() as opposed to just polling. > WaitNamedPipeA() should be more responsive. Given how rare this has been, it > likely doesn't matter whether we use WaitNamedPipeA() or polling. I'd lean > toward whichever makes the code simpler, probably polling. > >> So if we aim to not only fix "pg_ctl stop", but to make pgkill() robust, >> it's the way to go, IMHO. I'm not sure about an infinite loop they show, >> I'd vote for a loop with the same characteristics as in >> pgwin32_open_handle(). > I agree with bounding the total time of each kill(), like > pgwin32_open_handle() does for open(). While investigating a recent buildfarm failure [1] (which also happened before: [2]): # # --- C:/prog/bf/root/HEAD/pgsql/src/test/regress/expected/misc_functions.out 2026-04-08 01:57:31.191354200 +0000 # # +++ C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/results/misc_functions.out 2026-04-24 02:45:42.446717500 +0000 # # @@ -316,9 +316,10 @@ # #  -- permissions are set properly. # #  -- # #  SELECT pg_log_backend_memory_contexts(pg_backend_pid()); # # +WARNING:  could not send signal to process 3940: Invalid argument # #   pg_log_backend_memory_contexts # #  -------------------------------- # # - t # # + f # #  (1 row) # # # #  SELECT pg_log_backend_memory_contexts(pid) FROM pg_stat_activity # # @@ -347,9 +348,10 @@ # # # #  SET ROLE regress_log_memory; # #  SELECT pg_log_backend_memory_contexts(pg_backend_pid()); # # +WARNING:  could not send signal to process 3940: Invalid argument # #   pg_log_backend_memory_contexts # #  -------------------------------- # # - t # # + f # #  (1 row) # # # #  RESET ROLE; # # 1 of 248 tests failed. # # The differences that caused some tests to fail can be viewed in the file "C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/regression.diffs". # # A copy of the test summary that you see above is saved in the file "C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/regression.out". # ------------------------------------ # Looks like you failed 1 test of 20. I've managed to reproduced it locally, by running five pg_upgrade/002_pg_upgrade tests (with "SELECT pg_log_backend_memory_contexts(pg_backend_pid());" x100 in misc_functions.sql) concurrently on one-core VM: iteration 3 1/5 postgresql:pg_upgrade_5 / pg_upgrade_5/002_pg_upgrade OK              184.42s   5 subtests passed 2/5 postgresql:pg_upgrade_1 / pg_upgrade_1/002_pg_upgrade ERROR           184.79s   exit status 1 pg_upgrade_1\002_pg_upgrade\log\002_pg_upgrade_old_node.log: 2026-04-26 13:13:44.238 UTC client backend[688] pg_regress/misc_functions WARNING:  could not send signal to process 688: Invalid argument With the logging added inside pgkill(): @@ -89,6 +93,9 @@ pgkill(int pid, int sig)                         errno = EPERM;                         return -1;                 default: +#ifndef FRONTEND +elog(LOG, "!!!pgkill| CallNamedPipe() returned %d", GetLastError()); +#endif                         errno = EINVAL;         /* unexpected */                         return -1;         } and backtrace_functions = 'pgkill', I could see 2026-04-26 13:13:44.237 UTC client backend[688] pg_regress/misc_functions LOG:  !!!pgkill| CallNamedPipe() returned 231 2026-04-26 13:13:44.237 UTC client backend[688] pg_regress/misc_functions BACKTRACE:     pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]     SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]     pg_log_backend_memory_contexts+0x7b [0x7ff6c040df1b] [C:\src\postgresql\src\backend\utils\adt\mcxtfuncs.c:301]     ExecInterpExpr+0x684 [0x7ff6c00ec264] [C:\src\postgresql\src\backend\executor\execExprInterp.c:630] ... That is, pg_log_backend_memory_contexts(() fails due to the same ERROR_PIPE_BUSY. Moreover, I can see other instances of this error in the log, which go unnoticed: 2026-04-26 13:12:19.049 UTC client backend[2948] pg_regress/subselect LOG:  !!!pgkill| CallNamedPipe() returned 231 2026-04-26 13:12:19.049 UTC client backend[2948] pg_regress/subselect BACKTRACE:     pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]     SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]     SICleanupQueue+0x1e1 [0x7ff6c03252b1] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:677]     SIInsertDataEntries+0x91 [0x7ff6c0325511] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:411]     AtEOXact_Inval+0x86 [0x7ff6c04b0636] [C:\src\postgresql\src\backend\utils\cache\inval.c:1225]     CommitTransaction+0x2b4 [0x7ff6bffa5604] [C:\src\postgresql\src\backend\access\transam\xact.c:2477]     CommitTransactionCommandInternal+0x8e [0x7ff6bffa588e] [C:\src\postgresql\src\backend\access\transam\xact.c:3253]     CommitTransactionCommand+0x9 [0x7ff6bffa57e9] [C:\src\postgresql\src\backend\access\transam\xact.c:3213]     RemoveTempRelationsCallback+0x6a [0x7ff6bfff51fa] [C:\src\postgresql\src\backend\catalog\namespace.c:4710]     proc_exit_prepare+0xc6 [0x7ff6c03178d6] [C:\src\postgresql\src\backend\storage\ipc\ipc.c:199]     proc_exit+0x56 [0x7ff6c03177c6] [C:\src\postgresql\src\backend\storage\ipc\ipc.c:155]     PostgresMain+0xd9a [0x7ff6c034e2ea] [C:\src\postgresql\src\backend\tcop\postgres.c:5091]     BackendMain+0xd5 [0x7ff6c034acb5] [C:\src\postgresql\src\backend\tcop\backend_startup.c:124] ... 2026-04-26 13:12:45.010 UTC client backend[8104] pg_regress/replica_identity LOG:  !!!pgkill| CallNamedPipe() returned 231 2026-04-26 13:12:45.010 UTC client backend[8104] pg_regress/replica_identity BACKTRACE:     pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]     SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]     SICleanupQueue+0x1e1 [0x7ff6c03252b1] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:677]     SIInsertDataEntries+0x91 [0x7ff6c0325511] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:411]     AtInplace_Inval+0x67 [0x7ff6c04b0727] [C:\src\postgresql\src\backend\utils\cache\inval.c:1270]     heap_inplace_update_and_unlock+0x266 [0x7ff6bff2a366] [C:\src\postgresql\src\backend\access\heap\heapam.c:6591]     systable_inplace_update_finish+0x20 [0x7ff6bff4c160] [C:\src\postgresql\src\backend\access\index\genam.c:904]     index_update_stats+0x21e [0x7ff6bffefefe] [C:\src\postgresql\src\backend\catalog\index.c:2982]     index_build+0x2fc [0x7ff6bffed2fc] [C:\src\postgresql\src\backend\catalog\index.c:3180]     index_create+0xc05 [0x7ff6bffef035] [C:\src\postgresql\src\backend\catalog\index.c:1291]     DefineIndex+0x12fc [0x7ff6c006544c] [C:\src\postgresql\src\backend\commands\indexcmds.c:1265]     ProcessUtilitySlow+0x924 [0x7ff6c0358524] [C:\src\postgresql\src\backend\tcop\utility.c:1566]     standard_ProcessUtility+0x9f0 [0x7ff6c0359ec0] [C:\src\postgresql\src\backend\tcop\utility.c:1078]     ProcessUtility+0x70 [0x7ff6c0357aa0] [C:\src\postgresql\src\backend\tcop\utility.c:531]     ProcessUtilitySlow+0x3a0 [0x7ff6c0357fa0] [C:\src\postgresql\src\backend\tcop\utility.c:1262]     standard_ProcessUtility+0x9f0 [0x7ff6c0359ec0] [C:\src\postgresql\src\backend\tcop\utility.c:1078]     ProcessUtility+0x70 [0x7ff6c0357aa0] [C:\src\postgresql\src\backend\tcop\utility.c:531] [1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=drongo&dt=2026-04-24%2001%3A26%3A26 [2] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=drongo&dt=2025-09-26%2018%3A15%3A06 Best regards, Alexander --------------7XpVslWD6FQ1s5vuuMg09bsv Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hello Noah,

08.09.2024 19:53, Noah Misch wrote:
I see Microsoft suggests WaitNamedPipeA() as opposed to just polling.
WaitNamedPipeA() should be more responsive.  Given how rare this has been, it
likely doesn't matter whether we use WaitNamedPipeA() or polling.  I'd lean
toward whichever makes the code simpler, probably polling.

So if we aim to not only fix "pg_ctl stop", but to make pgkill() robust,
it's the way to go, IMHO. I'm not sure about an infinite loop they show,
I'd vote for a loop with the same characteristics as in
pgwin32_open_handle().
I agree with bounding the total time of each kill(), like
pgwin32_open_handle() does for open().

While investigating a recent buildfarm failure [1] (which also happened
before: [2]):
# # --- C:/prog/bf/root/HEAD/pgsql/src/test/regress/expected/misc_functions.out    2026-04-08 01:57:31.191354200 +0000
# # +++ C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/results/misc_functions.out    2026-04-24 02:45:42.446717500 +0000
# # @@ -316,9 +316,10 @@
# #  -- permissions are set properly.
# #  --
# #  SELECT pg_log_backend_memory_contexts(pg_backend_pid());
# # +WARNING:  could not send signal to process 3940: Invalid argument
# #   pg_log_backend_memory_contexts
# #  --------------------------------
# # - t
# # + f
# #  (1 row)
# #  
# #  SELECT pg_log_backend_memory_contexts(pid) FROM pg_stat_activity
# # @@ -347,9 +348,10 @@
# #  
# #  SET ROLE regress_log_memory;
# #  SELECT pg_log_backend_memory_contexts(pg_backend_pid());
# # +WARNING:  could not send signal to process 3940: Invalid argument
# #   pg_log_backend_memory_contexts
# #  --------------------------------
# # - t
# # + f
# #  (1 row)
# #  
# #  RESET ROLE;
# # 1 of 248 tests failed.
# # The differences that caused some tests to fail can be viewed in the file "C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/regression.diffs".
# # A copy of the test summary that you see above is saved in the file "C:/prog/bf/root/HEAD/pgsql.build/testrun/pg_upgrade/002_pg_upgrade/data/regression.out".
# ------------------------------------
# Looks like you failed 1 test of 20.

I've managed to reproduced it locally, by running five
pg_upgrade/002_pg_upgrade tests (with
"SELECT pg_log_backend_memory_contexts(pg_backend_pid());" x100 in
misc_functions.sql) concurrently on one-core VM:
iteration 3
1/5 postgresql:pg_upgrade_5 / pg_upgrade_5/002_pg_upgrade        OK              184.42s   5 subtests passed
2/5 postgresql:pg_upgrade_1 / pg_upgrade_1/002_pg_upgrade        ERROR           184.79s   exit status 1

pg_upgrade_1\002_pg_upgrade\log\002_pg_upgrade_old_node.log:
2026-04-26 13:13:44.238 UTC client backend[688] pg_regress/misc_functions WARNING:  could not send signal to process 688: Invalid argument

With the logging added inside pgkill():
@@ -89,6 +93,9 @@ pgkill(int pid, int sig)
                        errno = EPERM;
                        return -1;
                default:
+#ifndef FRONTEND
+elog(LOG, "!!!pgkill| CallNamedPipe() returned %d", GetLastError());
+#endif
                        errno = EINVAL;         /* unexpected */
                        return -1;
        }

and backtrace_functions = 'pgkill', I could see
2026-04-26 13:13:44.237 UTC client backend[688] pg_regress/misc_functions LOG:  !!!pgkill| CallNamedPipe() returned 231
2026-04-26 13:13:44.237 UTC client backend[688] pg_regress/misc_functions BACKTRACE:  
    pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]
    SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]
    pg_log_backend_memory_contexts+0x7b [0x7ff6c040df1b] [C:\src\postgresql\src\backend\utils\adt\mcxtfuncs.c:301]
    ExecInterpExpr+0x684 [0x7ff6c00ec264] [C:\src\postgresql\src\backend\executor\execExprInterp.c:630]
...

That is, pg_log_backend_memory_contexts(() fails due to the same
ERROR_PIPE_BUSY.

Moreover, I can see other instances of this error in the log, which go
unnoticed:
2026-04-26 13:12:19.049 UTC client backend[2948] pg_regress/subselect LOG:  !!!pgkill| CallNamedPipe() returned 231
2026-04-26 13:12:19.049 UTC client backend[2948] pg_regress/subselect BACKTRACE:  
    pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]
    SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]
    SICleanupQueue+0x1e1 [0x7ff6c03252b1] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:677]
    SIInsertDataEntries+0x91 [0x7ff6c0325511] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:411]
    AtEOXact_Inval+0x86 [0x7ff6c04b0636] [C:\src\postgresql\src\backend\utils\cache\inval.c:1225]
    CommitTransaction+0x2b4 [0x7ff6bffa5604] [C:\src\postgresql\src\backend\access\transam\xact.c:2477]
    CommitTransactionCommandInternal+0x8e [0x7ff6bffa588e] [C:\src\postgresql\src\backend\access\transam\xact.c:3253]
    CommitTransactionCommand+0x9 [0x7ff6bffa57e9] [C:\src\postgresql\src\backend\access\transam\xact.c:3213]
    RemoveTempRelationsCallback+0x6a [0x7ff6bfff51fa] [C:\src\postgresql\src\backend\catalog\namespace.c:4710]
    proc_exit_prepare+0xc6 [0x7ff6c03178d6] [C:\src\postgresql\src\backend\storage\ipc\ipc.c:199]
    proc_exit+0x56 [0x7ff6c03177c6] [C:\src\postgresql\src\backend\storage\ipc\ipc.c:155]
    PostgresMain+0xd9a [0x7ff6c034e2ea] [C:\src\postgresql\src\backend\tcop\postgres.c:5091]
    BackendMain+0xd5 [0x7ff6c034acb5] [C:\src\postgresql\src\backend\tcop\backend_startup.c:124]
...
2026-04-26 13:12:45.010 UTC client backend[8104] pg_regress/replica_identity LOG:  !!!pgkill| CallNamedPipe() returned 231
2026-04-26 13:12:45.010 UTC client backend[8104] pg_regress/replica_identity BACKTRACE:  
    pgkill+0x15f [0x7ff6c05279ef] [C:\src\postgresql\src\port\kill.c:103]
    SendProcSignal+0xb1 [0x7ff6c03202e1] [C:\src\postgresql\src\backend\storage\ipc\procsignal.c:341]
    SICleanupQueue+0x1e1 [0x7ff6c03252b1] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:677]
    SIInsertDataEntries+0x91 [0x7ff6c0325511] [C:\src\postgresql\src\backend\storage\ipc\sinvaladt.c:411]
    AtInplace_Inval+0x67 [0x7ff6c04b0727] [C:\src\postgresql\src\backend\utils\cache\inval.c:1270]
    heap_inplace_update_and_unlock+0x266 [0x7ff6bff2a366] [C:\src\postgresql\src\backend\access\heap\heapam.c:6591]
    systable_inplace_update_finish+0x20 [0x7ff6bff4c160] [C:\src\postgresql\src\backend\access\index\genam.c:904]
    index_update_stats+0x21e [0x7ff6bffefefe] [C:\src\postgresql\src\backend\catalog\index.c:2982]
    index_build+0x2fc [0x7ff6bffed2fc] [C:\src\postgresql\src\backend\catalog\index.c:3180]
    index_create+0xc05 [0x7ff6bffef035] [C:\src\postgresql\src\backend\catalog\index.c:1291]
    DefineIndex+0x12fc [0x7ff6c006544c] [C:\src\postgresql\src\backend\commands\indexcmds.c:1265]
    ProcessUtilitySlow+0x924 [0x7ff6c0358524] [C:\src\postgresql\src\backend\tcop\utility.c:1566]
    standard_ProcessUtility+0x9f0 [0x7ff6c0359ec0] [C:\src\postgresql\src\backend\tcop\utility.c:1078]
    ProcessUtility+0x70 [0x7ff6c0357aa0] [C:\src\postgresql\src\backend\tcop\utility.c:531]
    ProcessUtilitySlow+0x3a0 [0x7ff6c0357fa0] [C:\src\postgresql\src\backend\tcop\utility.c:1262]
    standard_ProcessUtility+0x9f0 [0x7ff6c0359ec0] [C:\src\postgresql\src\backend\tcop\utility.c:1078]
    ProcessUtility+0x70 [0x7ff6c0357aa0] [C:\src\postgresql\src\backend\tcop\utility.c:531]


[1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=drongo&dt=2026-04-24%2001%3A26%3A26
[2] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=drongo&dt=2025-09-26%2018%3A15%3A06

Best regards,
Alexander
--------------7XpVslWD6FQ1s5vuuMg09bsv--