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 1sTfuj-001Dd3-Uw for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jul 2024 11:00:10 +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 1sTfui-00HHtY-5B for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jul 2024 11:00:08 +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.94.2) (envelope-from ) id 1sTfuh-00HHtP-PV for pgsql-hackers@lists.postgresql.org; Tue, 16 Jul 2024 11:00:07 +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.94.2) (envelope-from ) id 1sTfue-002Ovm-Jd for pgsql-hackers@lists.postgresql.org; Tue, 16 Jul 2024 11:00:07 +0000 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-52e9944764fso6185508e87.3 for ; Tue, 16 Jul 2024 04:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721127603; x=1721732403; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6mCc5K9N0L2B+T3qsR3if84dKVjTA9/1J9Efwnbev2Y=; b=XeHEs+NREUL5RvQw/KsniiRklsjeRj50IlZiTxbJsD9lbwd6j56Iiy23aKi+a7S/kA qxwULqU3Q5svwu4UjsxAgjrJvq3tzA8lbYpxvxxLi9spv9ex7yo0N0EylLy+fbpMM1Vd Kmf9kBt/1jBYskOSEJfkiQqaqFr2go1BHiB7u8wS2i1U1ldV8719rIPN4F0YT6ecpXWy /bHJ45zi/A4nSl7kjNujWvSU2Xi3l5DLUSM2pjdYv+dlHW4TOxmnikafS/DwI5LJlVSI l5qEpMhhRflHiT2bltSvDMfopOEo9aRlSoLibo/Y3XWQ5vnigildl0f8Ca/Dt/W6GqwD Hrfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721127603; x=1721732403; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6mCc5K9N0L2B+T3qsR3if84dKVjTA9/1J9Efwnbev2Y=; b=PUVe3LchJxeIi8XX1zQ7S8gT29frL1uODOYC2VfQmzzlM6H+XhBaNwrPXSH9d0KzsH CBtAWgM9T+GorHj6KhLbBKfpH72qABd9Jfrs3Gn2SsyTmt6/885XyCaoSipwXSwzYPtr GrpTZPZG0EdKkVPBy8mdtts1YxjPyn7t5W6WrHx8Sa+IwJTDFDZTLoSBZIrGPTyHit+C kqAJl3rvQ1gwxKIbGUrneJEirUk031kMY4Z86yXloLFxWPcrXfRxYugkecgEzDc9ART7 mmfeSS7PUusXtIT8T3w4wx4QP2QwYZbJqYb3gE83KsGnz0oQFW+PsvdY8oHECrGnCUwT HZKg== X-Forwarded-Encrypted: i=1; AJvYcCViH2ptJ1XUhc+eoilrOhWhPZ34y2azRGeSugtarwAcSoN4EE1SG+2oRCrort+OZUP7cEr4WRgNv0TqZsINt8/AQWHD8XYsMqlrnX+oVtfdYHAj X-Gm-Message-State: AOJu0YxLiH+OG/2CC1Dcw0VppvxGwAH7KgGQxrkIynW14LIsnG99/TJb 4UpieemS5V7ov/66mN3RoAKP3sqFtK7x7Qyo4cJ+H44QWasQDIxD X-Google-Smtp-Source: AGHT+IEJWchACXHoCGbN1QhBzegqpgfuXg/7dN7oORFQoDfrZZp85cMAZoveyvq30oRZV5wQqHG5WQ== X-Received: by 2002:ac2:4e0e:0:b0:52c:db80:d694 with SMTP id 2adb3069b0e04-52edef1dfcbmr1181334e87.20.1721127602942; Tue, 16 Jul 2024 04:00:02 -0700 (PDT) Received: from [1.0.0.7] ([178.155.17.96]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-52ed2532da7sm1130162e87.239.2024.07.16.04.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 16 Jul 2024 04:00:02 -0700 (PDT) Message-ID: Date: Tue, 16 Jul 2024 14:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [EXTERNAL] Re: Add non-blocking version of PQcancel Content-Language: en-US To: Jelte Fennema-Nio Cc: Noah Misch , Alvaro Herrera , Tom Lane , Jacob Champion , Denis Laxalde , vignesh C , Thomas Munro , Greg Stark , "Gregory Stark (as CFM)" , Jelte Fennema , Daniel Gustafsson , Peter Eisentraut , Andres Freund , Justin Pryzby , Robert Haas , pgsql-hackers@lists.postgresql.org, Etsuro Fujita References: <202403281753.ku5k2jvaw5fo@alvherre.pgsql> <3643677.1711648979@sss.pgh.pa.us> <20240329221724.03@rfd.leadboat.com> <4db099c8-4a52-3cc4-e970-14539a319466@gmail.com> From: Alexander Lakhin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello, 25.06.2024 11:24, Jelte Fennema-Nio wrote: > My expectation is that that should remove all failure cases. If it > doesn't, I think our best bet is removing the test again. It looks like that test eventually showed what could be called a virtue. Please take a look at a recent BF failure [1]: timed out after 10800 secs ... # +++ regress install-check in contrib/postgres_fdw +++ # using postmaster on /home/andrew/bf/root/tmp/buildfarm-e2ahpQ, port 5878 So the postgres_fdw test hanged for several hours while running on the Cygwin animal lorikeet. I've managed to reproduce this issue in my Cygwin environment by running the postgres_fdw test in a loop (10 iterations are enough to get the described effect). And what I'm seeing is that a query-cancelling backend is stuck inside pgfdw_xact_callback() -> pgfdw_abort_cleanup() -> pgfdw_cancel_query() -> pgfdw_cancel_query_begin() -> libpqsrv_cancel() -> WaitLatchOrSocket() -> WaitEventSetWait() -> WaitEventSetWaitBlock() -> poll(). The timeout value (approximately 30 seconds), which is passed to poll(), is effectively ignored by this call — the waiting lasts for unlimited time. This definitely is caused by 2466d6654. (I applied the test change from that commit to 2466d6654~1 and saw no issue when running the same test in a loop.) With gdb attached to a hanging backend, I see the following stack trace: #0  0x00007ffb7f70d5e4 in ntdll!ZwWaitForSingleObject () from /cygdrive/c/Windows/SYSTEM32/ntdll.dll #1  0x00007ffb7d2e920e in WaitForSingleObjectEx () from /cygdrive/c/Windows/System32/KERNELBASE.dll #2  0x00007ffb5ce78862 in fhandler_socket_wsock::evaluate_events (this=0x800126968, event_mask=50, events=@0x7ffffb208: 0, erase=erase@entry=false)     at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/fhandler/socket_inet.cc:268 #3  0x00007ffb5cdef0f5 in peek_socket (me=0xa001a43c0) at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/select.cc:1771 #4  0x00007ffb5cdf211e in select_stuff::poll (this=this@entry=0x7ffffb300, readfds=0x7ffffb570, readfds@entry=0x800000000, writefds=0x7ffffb560, writefds@entry=0x7ffffb5c0, exceptfds=0x7ffffb550,     exceptfds@entry=0x7ffb5cdf2c97 ) at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/select.cc:554 #5  0x00007ffb5cdf257e in select (maxfds=maxfds@entry=45, readfds=0x800000000, writefds=0x7ffffb5c0, exceptfds=0x7ffb5cdf2c97 , us=4308570016,     us@entry=29973000) at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/select.cc:204 #6  0x00007ffb5cdf2927 in pselect (maxfds=45, readfds=0x7ffffb570, writefds=0x7ffffb560, exceptfds=0x7ffffb550, to=, to@entry=0x7ffffb500, set=, set@entry=0x0)     at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/select.cc:120 #7  0x00007ffb5cdf2c97 in cygwin_select (maxfds=, readfds=, writefds=, exceptfds=, to=0x7ffffb5b0)     at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/select.cc:147 #8  0x00007ffb5cddc112 in poll (fds=, nfds=, timeout=) at /usr/src/debug/cygwin-3.5.3-1/winsup/cygwin/poll.cc:83 ... and socket_inet.c:268 ([2]) indeed contains an infinite wait call (LOCK_EVENTS; / WaitForSingleObject (wsock_mtx, INFINITE)). So it looks like a Cygwin bug, but maybe something should be done on our side too, at least to prevent such lorikeet failures. [1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=lorikeet&dt=2024-07-12%2010%3A05%3A27 [2] https://www.cygwin.com/cgit/newlib-cygwin/tree/winsup/cygwin/fhandler/socket_inet.cc?h=cygwin-3.5.3 Best regards, Alexander