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 1we7Jg-004ZXE-0U for pgpool-hackers@arkaria.postgresql.org; Mon, 29 Jun 2026 08:26:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1we7Je-001xmG-2g for pgpool-hackers@arkaria.postgresql.org; Mon, 29 Jun 2026 08:26:06 +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.96) (envelope-from ) id 1we7Je-001xm8-1k for pgpool-hackers@lists.postgresql.org; Mon, 29 Jun 2026 08:26:06 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1we7Jc-00000000jGj-22WH for pgpool-hackers@lists.postgresql.org; Mon, 29 Jun 2026 08:26:05 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-37fcae0ecb3so691917a91.3 for ; Mon, 29 Jun 2026 01:26:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782721563; cv=none; d=google.com; s=arc-20260327; b=MIKFzXHtlMnheClQ+6EtII4OXCW9wCT7MYNwVTuKY9AD68x3umCKZJltILKRUJSD8G yqYYRV5FJv9xiCVIuTYBFy/0qOr71lXPqXheMz2BSg96SsO7iEFkCycgkZCLVNOr+h2X GVcBICcMF36+ygfgBshFuT55NnyqKko3o+VUk+kd5Nux3l1CfNjgJF5qjoinlkR1fyFj tO5IlI1FN0BrwSbi7uaiO2Xmz2BglwEccEjtnhLa0v+RamSzK2VevMmlJWWDE/gxzQwr SY/NZ1zLvgCwUQE7+rLY0AlzilVq4P94oySg4d55tr6De2AXJRL0k7pcrX0zyELr3OhD 8b9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=oTUmEGnjD/tX6gtQbB8QDR4nNUNmek9Onx9JV2GitMo=; fh=2jhwfur09QxWKE0iM/zusf3dSNi20nIVx0rRLoSe3Y8=; b=I6i6IJ/JD3IS4umu4lAytr3CLmiSJDD4pPG9ONtyk8kuUJ+a8iwohlWaahBOouR1Bs Wf0m7fnzf39BObbOBggecpXsy2NJz+2E+Cb443Xv3ULDT3fqT0niKRebQw/KhuZ5AVpF SHIlML895CzEokKaj2jxT9X5xeTY4lQ2timCXb2PGAXNTbiIcJzLFfof0gb2+AD0VS+B bWDrnh2FkDEjkdxl3SJ6NhQH8fxQ9UbxsnVxonexSIQR6cCCMA/Ujyu0UU/idAT5bn9f XBI79Xna+erDNBiEemwujTpx97RRy5Jo7HwciMrOfs9z/RR3RjGjJlAOkihmkAszyHgp wcpA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782721563; x=1783326363; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=oTUmEGnjD/tX6gtQbB8QDR4nNUNmek9Onx9JV2GitMo=; b=A5mPbRc6D8KsrAbBscEd+dAkWg4DD/lVXYKYpMLuVwpJn1lVNXEezKEvpkl+J3m8oW yipDrBR9zuT7te7TakXkBDGy5AZCy88AJNOFGBWt45dFCfW1nONVpukiVnZ9UwcCf5LL HT4bk1v7MvoYpQCj07b4kRJYWjsB/GkfPlKg9Mol7lcA+f7Hl6k5x+CBH/C+00s1ka4L QL5c0dO13xsw7gA6f94vnNqHtbv7A7o9L/nUT0T/9V+DokNfor8DCUmot4nQcYicSBJu Iyjbt7a0M/FrH/kCU4w6JgIr9NCeWFXZGEru0eHfYEEScnlvZCxEugAcGBWhVRiPvzF2 AQXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782721563; x=1783326363; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oTUmEGnjD/tX6gtQbB8QDR4nNUNmek9Onx9JV2GitMo=; b=so0mzJevS1g7sDon+PlbNCOwpMARSHweQnO6o+hSdF5NKqGGRh2fqRQ0loJMjM450R 2Md+uJBQ7M6ndrik8LM1eLiB7y5eedyu5r94osDVFEJJb4IggiEiWGgZcWTTUy65JK1Z CwY5cF81pyr82zTG6VAT1BKTaNJRT8qD5kG/LhFrPcEGJnwUy6cqBgHhWe08X2gYEXJF adC/Op+mn1YSMtju5X3GXWlvch4EfXljlIJKwrxNsstuw2GUG04AwxlRFD2bgZMBiAUz PuClVbpPFFB5/r6pu9sbP9+kB9ae1rElhhJu1oeQYUbzNAOSRP+U0EVtThr9Pt+CWwQG bg3g== X-Gm-Message-State: AOJu0YwsbGillCbiBeP1r6ZPyGc446r2lnjBqGOvzTQNc812gl6JVGDd 7nT3spxX/HBxtfnrIpRsOurF1TdZPT3MymhCFNvoc7IaN3y3BIhn66dRTm9Y38jj2pgx1i28Bmc raGUHfeKn5G/stV+Gq+pxebotLUM+TuTkG2OaBwk= X-Gm-Gg: AfdE7clMwCGZXAwvcZUpOQMvyDOXH/UkOrKF7VqQMKi7fwPGuUkQBVSGECslHiJB4vK m4TMb3XPMtebiku0Vdjd2b0amWRBf00s2KVl0t21S/9GSwg/i0rUhKxU+4fEmOijlaqEfCrW0/7 BZO30Zym55dUBew5+IY8Zdkfqs0zvsbjJreSnGs6dvXJTzLZPP0SckKmZyxx5mou2W8TR5EJ2zX /TXG9scfPaROSyqpm7rc1htan1jcB3THasWzUmcl3vzhuv5UfrCxjxiu5eopj0mT8akaPmXLg== X-Received: by 2002:a17:90b:1a84:b0:380:873:49cb with SMTP id 98e67ed59e1d1-38008828cb6mr1936139a91.21.1782721563549; Mon, 29 Jun 2026 01:26:03 -0700 (PDT) MIME-Version: 1.0 From: Emond Papegaaij Date: Mon, 29 Jun 2026 10:25:51 +0200 X-Gm-Features: AVVi8CeqjvbD7sPJzcPRDapSHgSjbL4QDjsuzgp9kGKGGskpEmB46P6lE6-bGuU Message-ID: Subject: [PATCH] Segfault in pool_do_auth() when failover races with a new connection To: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000877b760655603545" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000877b760655603545 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Last night one of CI builds detected a segmentation fault in pgpool (4.7.2). I've ran an analysis on the coredump with Claude and came to the conclusion that this can happen when trying to open a connection in the middle of a failover. Symptom / backtrace (resolved from the core dump): pool_do_auth (src/auth/pool_auth.c:349) <-- SIGSEGV, fault addr 0x0 connect_backend (src/protocol/child.c:1099) (PG_TRY block) get_backend_connection (src/protocol/child.c:2109) do_child (src/protocol/child.c:233) The crashing statement is: protoMajor =3D MAIN_CONNECTION(cp)->sp->major; /* pool_auth.c:349 */ i.e. cp->slots[MAIN_NODE_ID] is NULL. From the core, the pool had slots[0] =3D=3D NULL while slots[1]/slots[2] were valid, and MAIN_NODE_ID = =3D=3D 0. pool_initialize_private_backend_status() snapshots private_backend_status[] and my_main_node_id non=E2=80=91atomically w.r.t. = the parent's failover, so a child can capture my_main_node_id =3D=3D 0 while node 0 is already CON_DOWN. new_connection() then never creates slots[0], and pool_do_auth() dereferences the NULL main slot. (Same class as the NULL=E2=80=91MAIN_CONNECTION case noted in pool_virtual_main_db_node_id().) Attached is a patch that fixes the issue. Best regards, Emond --000000000000877b760655603545 Content-Type: text/x-patch; charset="US-ASCII"; name="connect_crash_fix.patch" Content-Disposition: attachment; filename="connect_crash_fix.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqyydiev0 ZGlmZiAtLWdpdCBpL3NyYy9wcm90b2NvbC9jaGlsZC5jIHcvc3JjL3Byb3RvY29sL2NoaWxkLmMK aW5kZXggYzM0ZjA1NzI4Li4xZjJlZGE4MWEgMTAwNjQ0Ci0tLSBpL3NyYy9wcm90b2NvbC9jaGls ZC5jCisrKyB3L3NyYy9wcm90b2NvbC9jaGlsZC5jCkBAIC0xNDc2LDYgKzE0NzYsMjkgQEAgcG9v bF9pbml0aWFsaXplX3ByaXZhdGVfYmFja2VuZF9zdGF0dXModm9pZCkKIAl9CiAKIAlteV9tYWlu X25vZGVfaWQgPSBSRUFMX01BSU5fTk9ERV9JRDsKKworCS8qCisJICogUkVBTF9NQUlOX05PREVf SUQgYW5kIHRoZSBwZXItbm9kZSBzdGF0dXMgYXJlIHJlYWQgZnJvbSBzaGFyZWQgbWVtb3J5CisJ ICogbm9uLWF0b21pY2FsbHksIHNvIGEgY29uY3VycmVudCBmYWlsb3ZlciBjYW4gbGVhdmUgbXlf bWFpbl9ub2RlX2lkCisJICogcG9pbnRpbmcgYXQgYSBub2RlIHdlIGp1c3QgY2FwdHVyZWQgYXMg ZG93bi4gUmUtcG9pbnQgaXQgYXQgdGhlIGZpcnN0CisJICogbm9kZSB0aGF0IGlzIHVwIGluIG91 ciBwcml2YXRlIHNuYXBzaG90OyBvdGhlcndpc2UgTUFJTl9DT05ORUNUSU9OKCkKKwkgKiB3b3Vs ZCBkZXJlZmVyZW5jZSBhIGNvbm5lY3Rpb24gc2xvdCB0aGF0IGlzIG5ldmVyIGNyZWF0ZWQgZm9y IGEgZG93bgorCSAqIG5vZGUuCisJICovCisJaWYgKG15X21haW5fbm9kZV9pZCA8IDAgfHwgbXlf bWFpbl9ub2RlX2lkID49IE5VTV9CQUNLRU5EUyB8fAorCQkocHJpdmF0ZV9iYWNrZW5kX3N0YXR1 c1tteV9tYWluX25vZGVfaWRdICE9IENPTl9VUCAmJgorCQkgcHJpdmF0ZV9iYWNrZW5kX3N0YXR1 c1tteV9tYWluX25vZGVfaWRdICE9IENPTl9DT05ORUNUX1dBSVQpKQorCXsKKwkJZm9yIChpID0g MDsgaSA8IE5VTV9CQUNLRU5EUzsgaSsrKQorCQl7CisJCQlpZiAocHJpdmF0ZV9iYWNrZW5kX3N0 YXR1c1tpXSA9PSBDT05fVVAgfHwKKwkJCQlwcml2YXRlX2JhY2tlbmRfc3RhdHVzW2ldID09IENP Tl9DT05ORUNUX1dBSVQpCisJCQl7CisJCQkJbXlfbWFpbl9ub2RlX2lkID0gaTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCX0KIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBpL3NyYy9wcm90 b2NvbC9wb29sX2Nvbm5lY3Rpb25fcG9vbC5jIHcvc3JjL3Byb3RvY29sL3Bvb2xfY29ubmVjdGlv bl9wb29sLmMKaW5kZXggYjE2Y2NjMzllLi5hOTM5YjA4YTcgMTAwNjQ0Ci0tLSBpL3NyYy9wcm90 b2NvbC9wb29sX2Nvbm5lY3Rpb25fcG9vbC5jCisrKyB3L3NyYy9wcm90b2NvbC9wb29sX2Nvbm5l Y3Rpb25fcG9vbC5jCkBAIC0xMDM1LDYgKzEwMzUsMjYgQEAgbmV3X2Nvbm5lY3Rpb24oUE9PTF9D T05ORUNUSU9OX1BPT0wgKnApCiAKIAlpZiAoYWN0aXZlX2JhY2tlbmRfY291bnQgPiAwKQogCXsK KwkJLyoKKwkJICogQSBjb25jdXJyZW50IGZhaWxvdmVyIG1heSBoYXZlIGNoYW5nZWQgYmFja2Vu ZCBzdGF0dXMgd2hpbGUgd2Ugd2VyZQorCQkgKiBjcmVhdGluZyBjb25uZWN0aW9ucywgbGVhdmlu ZyBteV9tYWluX25vZGVfaWQgcG9pbnRpbmcgYXQgYSBub2RlIHdlCisJCSAqIHNraXBwZWQgKGl0 cyBzbG90IGlzIE5VTEwpLiBSZS1wb2ludCBpdCBhdCBhIG5vZGUgd2UgZGlkIGNvbm5lY3QgdG8K KwkJICogc28gdGhhdCBNQUlOX0NPTk5FQ1RJT04oKSBuZXZlciBkZXJlZmVyZW5jZXMgYSBOVUxM IHNsb3QgKGUuZy4gaW4KKwkJICogcG9vbF9kb19hdXRoKCkpLgorCQkgKi8KKwkJaWYgKG15X21h aW5fbm9kZV9pZCA8IDAgfHwgbXlfbWFpbl9ub2RlX2lkID49IE5VTV9CQUNLRU5EUyB8fAorCQkJ cC0+c2xvdHNbbXlfbWFpbl9ub2RlX2lkXSA9PSBOVUxMKQorCQl7CisJCQlmb3IgKGkgPSAwOyBp IDwgTlVNX0JBQ0tFTkRTOyBpKyspCisJCQl7CisJCQkJaWYgKHAtPnNsb3RzW2ldICE9IE5VTEwp CisJCQkJeworCQkJCQlteV9tYWluX25vZGVfaWQgPSBpOworCQkJCQlicmVhazsKKwkJCQl9CisJ CQl9CisJCX0KKwogCQlyZXR1cm4gcDsKIAl9CiAK --000000000000877b760655603545--