Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ppnff-0008If-JA for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Apr 2023 10:07:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ppnfc-0008Oj-KV for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Apr 2023 10:07:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ppnfc-0008NI-62 for pgsql-hackers@lists.postgresql.org; Fri, 21 Apr 2023 10:07:12 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ppnfY-0013Xh-AK for pgsql-hackers@postgresql.org; Fri, 21 Apr 2023 10:07:10 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 9449D21CD16A for ; Fri, 21 Apr 2023 13:07:04 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1682071624; bh=xRqDlfPzRsrw1QDSUACD189stkXoBDFKKBoW+ZlZiFs=; h=Date:From:To:Subject:User-Agent:Message-ID:From; b=S4EKHcZTeEJcTx8gUcmeAvy2UJsJEsWEQAzSnhqmFrAv+SepLFXPZwvnWYCEtE4U1 DDUFfdmRy0bIY7gKqo7aM27DJBFzhDo0LPzPKFKPLCOVQEmDrmW6dkGpO8qIRkqrOA byr+gHTiRQFOAYbO0sUCsrO7Gc2gFV5JkdhLplrxZgFHnBAGvxPTcCh54qtcXnIuMH F9mR32OlYlK6SZpdeEQGFDcrgDtypCDo7GkJc67wXbYMppliqs9y0bLosDSiZtDl8b Qh8Cdkn4yx9k9Ujzw+dvpFdrniV57yqIzgiLM1tGyOX/i8V/fnUrkANKb3a/4k5rHY YYLTeXhD6YwOw== MIME-Version: 1.0 Date: Fri, 21 Apr 2023 13:07:03 +0300 From: Alexander Pyhalov To: pgsql-hackers@postgresql.org Subject: buffer refcount leak in foreign batch insert code User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_d154eab10d15f85dfd7ba5a8711a8f3c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_d154eab10d15f85dfd7ba5a8711a8f3c Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi. We've found that in cases like the one attached, when we insert into foreign partition with batch_size set, buffer refcount leak is detected. The above example we see a dozen of similar messages: repro_small.sql:31: WARNING: buffer refcount leak: [14621] (rel=base/16718/16732, blockNum=54, flags=0x93800000 The issue was introduced in the following commit commit b676ac443b6a83558d4701b2dd9491c0b37e17c4 Author: Tomas Vondra Date: Fri Jun 11 20:19:48 2021 +0200 Optimize creation of slots for FDW bulk inserts In this commit we avoid recreating slots for each batch. But it seems that created slots should still be cleared in the end of ExecBatchInsert(). At least the attached patch seems to fix the issue. -- Best regards, Alexander Pyhalov, Postgres Professional --=_d154eab10d15f85dfd7ba5a8711a8f3c Content-Transfer-Encoding: base64 Content-Type: text/plain; name=repro_small.sql Content-Disposition: attachment; filename=repro_small.sql; size=1478 Q1JFQVRFIEVYVEVOU0lPTiBwb3N0Z3Jlc19mZHc7CkRPICRkJAogICAgQkVHSU4KICAgICAgICBF WEVDVVRFICQkQ1JFQVRFIFNFUlZFUiBsb29wYmFjayBGT1JFSUdOIERBVEEgV1JBUFBFUiBwb3N0 Z3Jlc19mZHcKICAgICAgICAgICAgT1BUSU9OUyAoZGJuYW1lICckJHx8Y3VycmVudF9kYXRhYmFz ZSgpfHwkJCcsCiAgICAgICAgICAgICAgICAgICAgIHBvcnQgJyQkfHxjdXJyZW50X3NldHRpbmco J3BvcnQnKXx8JCQnCiAgICAgICAgICAgICkkJDsKICAgIEVORAokZCQ7CkNSRUFURSBVU0VSIE1B UFBJTkcgRk9SIENVUlJFTlRfVVNFUiBTRVJWRVIgbG9vcGJhY2s7CgpDUkVBVEUgVEFCTEUgbG9j YWxfZGF0YSAoaWQgaW50LCBkYXRhIHRleHQpOwpJTlNFUlQgSU5UTyBsb2NhbF9kYXRhIFNFTEVD VCBpLCAndGVzdCd8fCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBpOwoKQ1JFQVRF IFRBQkxFIHNoYXJkZWRfZGF0YSAoaWQgaW50LCBkYXRhIHRleHQpIFBBUlRJVElPTiBCWSBIQVNI KGlkKTsKQ1JFQVRFIFRBQkxFIHNoYXJkZWRfZGF0YV9wMCAgUEFSVElUSU9OIE9GIHNoYXJkZWRf ZGF0YSBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgNCwgcmVtYWluZGVyIDApOwpDUkVBVEUgVEFC TEUgc2hhcmRlZF9kYXRhX3AxX3JlbW90ZSAoaWQgaW50LCBkYXRhIHRleHQpOwpDUkVBVEUgRk9S RUlHTiBUQUJMRSBzaGFyZGVkX2RhdGFfcDEgIFBBUlRJVElPTiBPRiBzaGFyZGVkX2RhdGEgRk9S IFZBTFVFUyBXSVRIIChtb2R1bHVzIDQsIHJlbWFpbmRlciAxKQpTRVJWRVIgbG9vcGJhY2sgT1BU SU9OUyAodGFibGVfbmFtZSAnc2hhcmRlZF9kYXRhX3AxX3JlbW90ZScpOwpDUkVBVEUgVEFCTEUg c2hhcmRlZF9kYXRhX3AyX3JlbW90ZSAoaWQgaW50LCBkYXRhIHRleHQpOwpDUkVBVEUgRk9SRUlH TiBUQUJMRSBzaGFyZGVkX2RhdGFfcDIgIFBBUlRJVElPTiBPRiBzaGFyZGVkX2RhdGEgRk9SIFZB TFVFUyBXSVRIIChtb2R1bHVzIDQsIHJlbWFpbmRlciAyKQpTRVJWRVIgbG9vcGJhY2sgT1BUSU9O UyAodGFibGVfbmFtZSAnc2hhcmRlZF9kYXRhX3AyX3JlbW90ZScpOwpDUkVBVEUgVEFCTEUgc2hh cmRlZF9kYXRhX3AzX3JlbW90ZSAoaWQgaW50LCBkYXRhIHRleHQpOwpDUkVBVEUgRk9SRUlHTiBU QUJMRSBzaGFyZGVkX2RhdGFfcDMgIFBBUlRJVElPTiBPRiBzaGFyZGVkX2RhdGEgRk9SIFZBTFVF UyBXSVRIIChtb2R1bHVzIDQsIHJlbWFpbmRlciAzKQpTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAnc2hhcmRlZF9kYXRhX3AzX3JlbW90ZScpOwoKaW5zZXJ0IGludG8gc2hhcmRl ZF9kYXRhIHNlbGVjdCAqIGZyb20gbG9jYWxfZGF0YSA7CmRlbGV0ZSBmcm9tIHNoYXJkZWRfZGF0 YTsKCmFsdGVyIHNlcnZlciBsb29wYmFjayBvcHRpb25zIChhZGQgYmF0Y2hfc2l6ZSAnMTAwJyk7 Cmluc2VydCBpbnRvIHNoYXJkZWRfZGF0YSBzZWxlY3QgKiBmcm9tIGxvY2FsX2RhdGEgOwo= --=_d154eab10d15f85dfd7ba5a8711a8f3c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Fix-buffer-refcount-leak.patch Content-Disposition: attachment; filename=0001-Fix-buffer-refcount-leak.patch; size=867 RnJvbSAxMmQxZmJmNTZjMWM4MmQ0NjU5ZGE0ODRjMjIwNzUzOWYzOTZhYWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBGcmksIDIxIEFwciAyMDIzIDEyOjU0OjQxICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gRml4IGJ1ZmZlciByZWZjb3VudCBsZWFrCgpUaGUgYnVmZmVyIHJlZmNvdW50IGxlYWsg d2FzIGludHJvZHVjZWQKaW4gYjY3NmFjNDQzYjZhODM1NThkNDcwMWIyZGQ5NDkxYzBiMzdlMTdj NAotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgNiArKysrKysK IDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCmluZGV4IDZhYThjMDNkZWZiLi4xNGFiODM4MjE4MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTEyNjEsNiArMTI2MSwxMiBAQCBFeGVjQmF0 Y2hJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAogCWlmIChjYW5TZXRUYWcgJiYg bnVtSW5zZXJ0ZWQgPiAwKQogCQllc3RhdGUtPmVzX3Byb2Nlc3NlZCArPSBudW1JbnNlcnRlZDsK KworCWZvciAoaSA9IDA7IGkgPCBudW1TbG90czsgaSsrKQorCXsKKwkJRXhlY0NsZWFyVHVwbGUo c2xvdHNbaV0pOworCQlFeGVjQ2xlYXJUdXBsZShwbGFuU2xvdHNbaV0pOworCX0KIH0KIAogLyoK LS0gCjIuMzQuMQoK --=_d154eab10d15f85dfd7ba5a8711a8f3c--