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 1wX4tX-0032WQ-1C for pgsql-bugs@arkaria.postgresql.org; Tue, 09 Jun 2026 22:26:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wX4tW-008YDu-0W for pgsql-bugs@arkaria.postgresql.org; Tue, 09 Jun 2026 22:26:02 +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 1wX4tV-008YDm-2L for pgsql-bugs@lists.postgresql.org; Tue, 09 Jun 2026 22:26:01 +0000 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wX4tT-00000001upl-2QJC for pgsql-bugs@lists.postgresql.org; Tue, 09 Jun 2026 22:26:00 +0000 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-59f967189e7so1855809e0c.0 for ; Tue, 09 Jun 2026 15:25:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781043958; x=1781648758; darn=lists.postgresql.org; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Pib+vNmILvcZk2Joz+sx6pnfXBw0lbBC7Y3hOF6MX98=; b=Ylvp/eTVb2NOWbXH39ww+gB8pfrvITWKtE0PRgR+rUIocsYHtTzGDvTyAnCMaodV5T 3YQV99KOFoSwNQBgyTbt6Y2B2+IvefmWBFNx2XMZrHyNABfBKFoZf233GDTNLYD17NNU cbZaB25Im5+sidBGeYEoKz8PR0S+eX+UNN4lVfzxELqvfXt2WkmQzgXARU3ZKR7xv9CY CJz5H4oE6HZr24dD6y9iWd99X1PtOsfJC74u3vYPugSx3t2ichGg/sWH14CCTHcBEKl/ 7LzTnNC2HD20+pQXVOw2vxNpEppU5TttIjwWzWijQnc2T5u8syp5QCsjDgfQpaMxuU+H jYKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781043958; x=1781648758; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Pib+vNmILvcZk2Joz+sx6pnfXBw0lbBC7Y3hOF6MX98=; b=s2tXRaBlz1ilczXmOGbzRm0vbaxy8CJTckuDHE8wqDtmp9z+Tk7OGxSGCnSLEwZ68/ g2qVRkcj28um17ykXfIZ8Xv1HQSVaNsYKWoA4maZOCgz7rjS78+I5BJmdC8f/QzzzUux 7ai+aShRvcm4yOpdW6Z048nAUXXn2Dd/CJPGdqdr7NHvzLvTRmAre9XcMgQk6Xzm6auf kQF4NBEOiXyMojhjJ3+3lIqeDsIYNzz8Rq2S1mbkHIP49q6pXhpKinaQf+wnBJXxvBEp FfdCZO/eCBz/ULMBbS5Mz2z/Ag0xLgo20TwlHsvTXJ3ocoStCEx5FQhy9J39N6FCd/l0 xQsA== X-Forwarded-Encrypted: i=1; AFNElJ9+5/a6GHxmY5JDRhPSleCkCfL6NcLVuLjr31N4697JBdUu8Y20lJrM2IOt9VR9KcHJNnFD4hWmNYsG@lists.postgresql.org X-Gm-Message-State: AOJu0YwfG0tbYKQnXoJMuJkXu4QPEkZFEny9Xmo9yqj6V1ACvEWF/0qt QAxckwQF5bZTIqGy3kOTeKX6YK5XCtDxGKfgshdK+rI3I3RzE4L7nuIG X-Gm-Gg: Acq92OFIjCcA5mLhbJGIdKuph+M94MWThWVyo92i3Dl9laqJsvtAOq7M7tRaNUmHKwf fw/zi49ItRrrei8T2JQJzdtvWRb/DhuPAc00/IM0NzGOMlleniWvz+VQAxuWoF+Yy7+fG/Qyjzq bJufG6c7IhZcgl43hfOxRRMNUUpLvIIb0+FHwLH0+WxorYaWWN4wVb+AYxZkfucHNx8FzmYdOfG p89ym5Y8a0I0y2OceFHNPNsxTBdGzTQ51iG7zvxXlc6ZP2g+d2buwQJrN2OEoCn2pGc4afSS9+i LhPKpee5FuCPUQAZwMBB3ZhJDob31fZxLvaoi7Y9L4okgOZ8zvTOOwnL5bhBBjNYh+VQA/8jPqs XwH2qhtfyrzcpAmJc/FgyXI7mYJOSanXy/6MQluqlzMCE4wdRrR1fl1L7u7z58UaLSIA9awu9Ce yafDli6qPrOfX5n9eahm9E/z66M9jVrCtlFJZqGI1R6DUjpL3Hci1Bb0b+oj06jsinvCk= X-Received: by 2002:a05:6122:d87:b0:59f:8ddb:2fc1 with SMTP id 71dfb90a1353d-5ac55be8a83mr10669291e0c.7.1781043958565; Tue, 09 Jun 2026 15:25:58 -0700 (PDT) Received: from localhost ([2804:14d:328a:a59c:6551:f299:454e:9985]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5a6d6413cc1sm18402409e0c.3.2026.06.09.15.25.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jun 2026 15:25:58 -0700 (PDT) Content-Type: multipart/mixed; boundary=8d48e7367705b5a8026706d3d1c6a27d46cd2154b0f6be54d85c6ef3bcc6 Mime-Version: 1.0 Date: Tue, 09 Jun 2026 19:25:55 -0300 Message-Id: Subject: Re: Autoprewarm workers terminated due to a segmentation fault From: "Matheus Alcantara" To: "Tomas Vondra" , "Glauber Batista" , X-Mailer: aerc 0.21.0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --8d48e7367705b5a8026706d3d1c6a27d46cd2154b0f6be54d85c6ef3bcc6 Content-Type: multipart/alternative; boundary=d25fbc43a4271520a54e8c500b0040a6e11678fb9c4b876a1e255b33371d --d25fbc43a4271520a54e8c500b0040a6e11678fb9c4b876a1e255b33371d Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Tue Jun 9, 2026 at 6:44 PM -03, Tomas Vondra wrote: > So how does it get advanced past the prewarm_stop_idx? I've been unable > to reproduce it locally, maybe it's platform-specific. The original > report was from ARM, are you on ARM too, Matheus? > Yes, I'm also on ARM. I also set pg_prewarm.autoprewarm_interval=3D10s on postgresql.conf, not sure if it make more easier to reproduce. > But AFAIK the code may not account for read stream callback updating the > pos to prewarm_stop_idx? The callback may end with (p->pos =3D > apw_state->prewarm_stop_idx), and that seems to be past the end of the > array. > Yes, this is my understanding. > That'd mean the proposed check is generally the correct way to fix this. > TBH it's not clear to me why this needs to set the *next* entry at the > end of the loop. Well, it does that so that the loop condition can use > 'blk', but that seems a bit fragile / confusing, and no one noticed the > issue. > > Maybe this would be a better way to write the while loop? > > while (i < apw_state->prewarm_stop_idx) > { > blk =3D block_info[i]; > > if (blk.tablespace !=3D tablespace || > blk.filenumber !=3D filenumber) > break; > > ... > } > > Is attached patch what are you sugesting? If yes, I agree that looks better, it's more safe and easier to understand. -- Matheus Alcantara EDB: https://www.enterprisedb.com --d25fbc43a4271520a54e8c500b0040a6e11678fb9c4b876a1e255b33371d-- --8d48e7367705b5a8026706d3d1c6a27d46cd2154b0f6be54d85c6ef3bcc6 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Fix-out-of-bounds-access-in-autoprewarm-worker.patch Content-Type: text/plain; charset=utf-8; name=v2-0001-Fix-out-of-bounds-access-in-autoprewarm-worker.patch RnJvbSBlYmY1Mjk2MDI2YjZmMDdmYjMwODIxZWUwNjAzZmZmMjQ4MTcwMDFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFR1ZSwgOSBKdW4gMjAyNiAxNzo1OToyMCAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIEZp eCBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiBhdXRvcHJld2FybSB3b3JrZXIKClRoZSByZWFkIHN0 cmVhbSBjYWxsYmFjayBhcHdfcmVhZF9zdHJlYW1fbmV4dF9ibG9jaygpIGFkdmFuY2VzIHAtPnBv cwp0aHJvdWdoIHRoZSBibG9ja19pbmZvIGFycmF5LiBXaGVuIHByb2Nlc3NpbmcgdGhlIGxhc3Qg YmxvY2ssIGl0CmluY3JlbWVudHMgcC0+cG9zIHRvIHByZXdhcm1fc3RvcF9pZHggYmVmb3JlIHJl dHVybmluZy4gVGhlIGNhbGxiYWNrCml0c2VsZiBpcyBzYWZlIGJlY2F1c2UgaXQgY2hlY2tzIGJv dW5kcyBiZWZvcmUgYWNjZXNzaW5nIHRoZSBhcnJheS4KCkhvd2V2ZXIsIHRoZSBjYWxsZXIgYXNz aWduZWQgYmxrIGZyb20gYmxvY2tfaW5mb1tpXSBhdCB0aGUgZW5kIG9mIHRoZQpsb29wIGJvZHks IGJlZm9yZSB0aGUgbG9vcCBjb25kaXRpb24gd2FzIHJlLWV2YWx1YXRlZC4gV2hlbiBpIGVxdWFs ZWQKcHJld2FybV9zdG9wX2lkeCwgdGhpcyBhY2Nlc3NlZCBtZW1vcnkgYmV5b25kIHRoZSBhbGxv Y2F0ZWQgRFNNIHNlZ21lbnQsCmNhdXNpbmcgYSBzZWdmYXVsdC4KClJlc3RydWN0dXJlIHRoZSBs b29wIHRvIGNoZWNrIGJvdW5kcyBhdCB0aGUgdG9wIGFuZCBhc3NpZ24gYmxrIGF0IHRoZQpiZWdp bm5pbmcgb2YgdGhlIGxvb3AgYm9keSwgd2hlcmUgaXQgaXMgYWx3YXlzIHNhZmUuIFRoaXMgYXZv aWRzIHRoZQpuZWVkIGZvciBhbiBleHBsaWNpdCBib3VuZHMgY2hlY2sgYXQgdGhlIGVuZC4KCkF1 dGhvcjogTWF0aGV1cyBBbGNhbnRhcmEgPG10aHMuZGV2QHBtLm1lPgpSZXBvcnRlZC1ieTogR2xh dWJlciBCYXRpc3RhIDxnbGF1YmVycmJhdGlzdGFAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTyUyQl9tVFFnUXlUWXdEaCUzRFU4 aVRuc0RtT0d5V3NaSmpVVjMxU21FWXdtdzZfeFk2QnclNDBtYWlsLmdtYWlsLmNvbQotLS0KIGNv bnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jIHwgMTYgKysrKysrKysrKystLS0tLQogMSBm aWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdhcm0v YXV0b3ByZXdhcm0uYwppbmRleCBiYTBiYzhlNmQ0YS4uZjM1NjliMTJkMTEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2Fy bS9hdXRvcHJld2FybS5jCkBAIC01NzIsMTYgKzU3MiwyMyBAQCBhdXRvcHJld2FybV9kYXRhYmFz ZV9tYWluKERhdHVtIG1haW5fYXJnKQogCQkgKiB2YWxpZCBmb3JrcyBvciBydW4gb3V0IG9mIG9w dGlvbnMsIHdlJ2xsIGNsb3NlIHRoZSByZWxhdGlvbiBhbmQKIAkJICogbW92ZSBvbi4KIAkJICov Ci0JCXdoaWxlIChpIDwgYXB3X3N0YXRlLT5wcmV3YXJtX3N0b3BfaWR4ICYmCi0JCQkgICBibGsu dGFibGVzcGFjZSA9PSB0YWJsZXNwYWNlICYmCi0JCQkgICBibGsuZmlsZW51bWJlciA9PSBmaWxl bnVtYmVyKQorCQl3aGlsZSAoaSA8IGFwd19zdGF0ZS0+cHJld2FybV9zdG9wX2lkeCkKIAkJewot CQkJRm9ya051bWJlcglmb3JrbnVtID0gYmxrLmZvcmtudW07CisJCQlGb3JrTnVtYmVyCWZvcmtu dW07CiAJCQlCbG9ja051bWJlciBuYmxvY2tzOwogCQkJc3RydWN0IEF1dG9QcmV3YXJtUmVhZFN0 cmVhbURhdGEgcDsKIAkJCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAkJCUJ1ZmZlcgkJYnVmOwogCisJ CQlibGsgPSBibG9ja19pbmZvW2ldOworCisJCQkvKiBTdG9wIHdoZW4gd2UgcmVhY2ggYSBkaWZm ZXJlbnQgcmVsYXRpb24uICovCisJCQlpZiAoYmxrLnRhYmxlc3BhY2UgIT0gdGFibGVzcGFjZSB8 fAorCQkJCWJsay5maWxlbnVtYmVyICE9IGZpbGVudW1iZXIpCisJCQkJYnJlYWs7CisKKwkJCWZv cmtudW0gPSBibGsuZm9ya251bTsKKwogCQkJLyoKIAkJCSAqIHNtZ3JleGlzdHMgaXMgbm90IHNh ZmUgZm9yIGlsbGVnYWwgZm9ya251bSwgaGVuY2UgY2hlY2sgd2hldGhlcgogCQkJICogdGhlIHBh c3NlZCBmb3JrbnVtIGlzIHZhbGlkIGJlZm9yZSB1c2luZyBpdCBpbiBzbWdyZXhpc3RzLgpAQCAt NjQ1LDcgKzY1Miw2IEBAIGF1dG9wcmV3YXJtX2RhdGFiYXNlX21haW4oRGF0dW0gbWFpbl9hcmcp CiAKIAkJCS8qIEFkdmFuY2UgaSBwYXN0IGFsbCB0aGUgYmxvY2tzIGp1c3QgcHJld2FybWVkLiAq LwogCQkJaSA9IHAucG9zOwotCQkJYmxrID0gYmxvY2tfaW5mb1tpXTsKIAkJfQogCiAJCXJlbGF0 aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1 NSkKCg== --8d48e7367705b5a8026706d3d1c6a27d46cd2154b0f6be54d85c6ef3bcc6--