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 1rdSjL-005ih7-Ph for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Feb 2024 10:24:36 +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 1rdSjK-0009Wm-24 for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Feb 2024 10:24:34 +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 1rdSgB-000509-EJ for pgsql-hackers@lists.postgresql.org; Fri, 23 Feb 2024 10:21:20 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rdSg8-000V9i-4V for pgsql-hackers@postgresql.org; Fri, 23 Feb 2024 10:21:19 +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) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 72319E20EC3 for ; Fri, 23 Feb 2024 13:21:14 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1708683674; bh=XZbcAlBfbk69xbjWRXWOKuHFBjWGUcng5x3juh5CeTI=; h=Date:From:To:Subject:User-Agent:Message-ID:From; b=TisrfITmcxGYJ6DFW8B8NrUukSTrTTF73Wn0lsCdjrx0Q9V6aqGJUvhuqK51rp5jT E3h8nYJ3MIVlp8Th+NQFpjwhpNZriOT/nhsmAcsvm8pQr1HlOVQKN1nOPB3P3bPXwH Owf99Ru7uo+arZiAI/jlyZ9rq8Y2B1TbDctAsHw85HyyPapqWu0j7s/mO1Lorv9rvS w7JAO257hwom0YjG4egtiDXXq7fKLFpU/MGUZ+IJtLbMlTo2RkUBBEu1QGDhjB0Fd/ +KqGtop1iZlajVelImnk5/7Sataf6w1yuZ4S/T3Q7MSlxURrQ9lpkH6tlBicL7miMd sqkCvc8TC+2Yg== MIME-Version: 1.0 Date: Fri, 23 Feb 2024 13:21:14 +0300 From: Alexander Pyhalov To: Pgsql Hackers Subject: ExecAppendAsyncEventWait() in REL_14_STABLE can corrupt PG_exception_stack User-Agent: Roundcube Webmail/1.6.5 Message-ID: <425fa29a429b21b0332737c42a4fdc70@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_68a03aae440298101c2f5adc334ac7de" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_68a03aae440298101c2f5adc334ac7de Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi. Recent commit 555276f8594087ba15e0d58e38cd2186b9f39f6d introduced final cleanup of node->as_eventset in ExecAppendAsyncEventWait(). Unfortunately, now this function can return in the middle of TRY/FINALLY block, without restoring PG_exception_stack. We found this while working on our FDW. Unfortunately, I couldn't reproduce the issue with postgres_fdw, but it seems it is also affected. The following patch heals the issue. -- l Best regards, Alexander Pyhalov, Postgres Professional --=_68a03aae440298101c2f5adc334ac7de Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Avoid-corrupting-PG_exception_stack-in-ExecAppendAsy.patch Content-Disposition: attachment; filename=0001-Avoid-corrupting-PG_exception_stack-in-ExecAppendAsy.patch; size=1956 RnJvbSAwMjVmNDA4OTRkNmQ4ZjQ5OTE0NGYwZjdjNDVjMGExMjRhNDZjNDA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBGcmksIDIzIEZlYiAyMDI0IDEzOjA2OjQwICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gQXZvaWQgY29ycnVwdGluZyBQR19leGNlcHRpb25fc3RhY2sgaW4KIEV4ZWNBcHBlbmRB c3luY0V2ZW50V2FpdCgpCgpBZnRlciBjb21taXQgNTU1Mjc2Zjg1OTQwODdiYTE1ZTBkNThlMzhj ZDIxODZiOWYzOWY2ZApFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoKSBjb3VsZCBjb3JydXB0IFBH X2V4Y2VwdGlvbl9zdGFjawphZnRlciByZXR1cm5pbmcgaW4gdGhlIHRoZSBtaWRkbGUgb2YgUEdf VFJZKCkvUEdfRU5EX1RSWSgpIGJsb2NrLgpJdCBzaG91bGQgZXhpdCBvbmx5IGFmdGVyIFBHX0VO RF9UUlkoKS4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgfCAyNyArKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCsp LCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYmFiYTNj ZWVhMjMuLjQyOTYyZTgwMTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMDUy LDIxICsxMDUyLDIyIEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9k ZSkKIAkJICovCiAJCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhub2RlLT5hc19ldmVu dHNldCkgPT0gMSkKIAkJewotCQkJRnJlZVdhaXRFdmVudFNldChub2RlLT5hc19ldmVudHNldCk7 Ci0JCQlub2RlLT5hc19ldmVudHNldCA9IE5VTEw7Ci0JCQlyZXR1cm47CisJCQkvKiBSZXR1cm4g YWZ0ZXIgUEdfVFJZKCkvUEdfRU5EX1RSWSgpIGJsb2NrICovCisJCQlub2NjdXJyZWQgPSAwOwog CQl9CisJCWVsc2UKKwkJeworCQkJLyogUmV0dXJuIGF0IG1vc3QgRVZFTlRfQlVGRkVSX1NJWkUg ZXZlbnRzIGluIG9uZSBjYWxsLiAqLworCQkJaWYgKG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0la RSkKKwkJCQluZXZlbnRzID0gRVZFTlRfQlVGRkVSX1NJWkU7CiAKLQkJLyogUmV0dXJuIGF0IG1v c3QgRVZFTlRfQlVGRkVSX1NJWkUgZXZlbnRzIGluIG9uZSBjYWxsLiAqLwotCQlpZiAobmV2ZW50 cyA+IEVWRU5UX0JVRkZFUl9TSVpFKQotCQkJbmV2ZW50cyA9IEVWRU5UX0JVRkZFUl9TSVpFOwot Ci0JCS8qCi0JCSAqIElmIHRoZSB0aW1lb3V0IGlzIC0xLCB3YWl0IHVudGlsIGF0IGxlYXN0IG9u ZSBldmVudCBvY2N1cnMuICBJZiB0aGUKLQkJICogdGltZW91dCBpcyAwLCBwb2xsIGZvciBldmVu dHMsIGJ1dCBkbyBub3Qgd2FpdCBhdCBhbGwuCi0JCSAqLwotCQlub2NjdXJyZWQgPSBXYWl0RXZl bnRTZXRXYWl0KG5vZGUtPmFzX2V2ZW50c2V0LCB0aW1lb3V0LCBvY2N1cnJlZF9ldmVudCwKLQkJ CQkJCQkJCSBuZXZlbnRzLCBXQUlUX0VWRU5UX0FQUEVORF9SRUFEWSk7CisJCQkvKgorCQkJICog SWYgdGhlIHRpbWVvdXQgaXMgLTEsIHdhaXQgdW50aWwgYXQgbGVhc3Qgb25lIGV2ZW50IG9jY3Vy cy4gIElmCisJCQkgKiB0aGUgdGltZW91dCBpcyAwLCBwb2xsIGZvciBldmVudHMsIGJ1dCBkbyBu b3Qgd2FpdCBhdCBhbGwuCisJCQkgKi8KKwkJCW5vY2N1cnJlZCA9IFdhaXRFdmVudFNldFdhaXQo bm9kZS0+YXNfZXZlbnRzZXQsIHRpbWVvdXQsIG9jY3VycmVkX2V2ZW50LAorCQkJCQkJCQkJCSBu ZXZlbnRzLCBXQUlUX0VWRU5UX0FQUEVORF9SRUFEWSk7CisJCX0KIAl9CiAJUEdfRklOQUxMWSgp OwogCXsKLS0gCjIuMzQuMQoK --=_68a03aae440298101c2f5adc334ac7de--