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 1tnBMr-002vtk-8p for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Feb 2025 06:58:05 +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 1tnBMo-00H3xg-Dy for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Feb 2025 06:58:02 +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 1tnBMo-00H3xX-4A for pgsql-hackers@lists.postgresql.org; Wed, 26 Feb 2025 06:58:02 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tnBMl-0009bg-0r for pgsql-hackers@lists.postgresql.org; Wed, 26 Feb 2025 06:58:01 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ab7c4350826so107898266b.3 for ; Tue, 25 Feb 2025 22:57:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740553078; x=1741157878; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4CTBehM/7+mtv903qwthGvS4rneUTH05wQwOYtPfDcc=; b=ZqObd7C2lLOHJbSQ/nuTlFqseMyzjnmUSVPJF+O72l3PTLZn5cLW+QToBhsY1ovtni ilvBxRM7AsUbZIhDhE0gjTL0pxBAYw/YfGKbEZKgWoqxK5Kr0brIR8JRasIDnwShS6+C ZyhzUWylattxQP/yU9dGkNHFw+/ny75kwvwT0RBLb0Kbm13EB0WMDYRSuGExL94aXDGU tnIrAD4sbUW9w1nELPNwrIgDgRZz9tUMO03TC1BIhAOBDTgQ1Bbn7wKRFrGsNujUtxIO 0JtINQEJqZOPwWjORpW2+2cirfk59i7/TbXJdRtB9aHKxAUPewQKxczm6a/qv34Y27QC gBRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740553078; x=1741157878; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4CTBehM/7+mtv903qwthGvS4rneUTH05wQwOYtPfDcc=; b=DsnN0b5nnQI+ANy24hiUy1lwSL9Vo2E6Ni73vHZyuOeU82AHYNJy6+LpcHVzWvRaQ3 FKzWR0ho/9R9+40SblRnyn1mWRM2ju1JPacp3EbKlTMEJNBsiC3/IhbomU77DRys3SWV 4unrTaTscdtUYAPP8IloK5FMs1pEzCjb+dSplfUHHwX1uUOqbiyWzO/nYasmCfCm9zFC usPhssgI+InSaAF30AntTDZtko5/lR6UKr4B+KG92JlzV/5e0qh+EPv/zOoZB2o1/62z 53ME36UOL81/5xiZHt6i+O25VH/Eg5mQy9N+oAqFZ6+ta7oHVa1NEOgzc0vHNZQ77EJm qVdQ== X-Forwarded-Encrypted: i=1; AJvYcCXArsjDyPgCkOd3wksJghD8vnP7wI0eqDQWiy/cKPXfs47ad5M29uhtsRTjIvxpoUm1HHSsOfmBjFzUAcJM@lists.postgresql.org X-Gm-Message-State: AOJu0YyjMSJsKe/UR1gqJRfgWSr1NRO0PQgT/pTti8blsvJZ0mq5nXfh F2WOWci8ip4XGtR/f/jz9nN/7zQ91fk7W+9iMnlDq/EnkUkUqSqoXEZ99M+CiJ8AjH8kOnC1sze 2qV+FyP5DaEGthsw8lQAyBMBF14k= X-Gm-Gg: ASbGncuNikS8zFj9L5UScZUCCSs+3c5jiqWPK/AG/l7AP02gq7txeO/BV6eI0EbSCNk SDC9iaaEYOj5Lmhg/TmRtXq5RMydLXatmdKws91DtCJYBbV5BZlWsQczHxOMV9hMvM2xGJl6maI Jvwk0Ao1+s X-Google-Smtp-Source: AGHT+IGyAwS+M+M15QLYuG54f5lxyKJ21KPuxIxw/K8hXyNIb7VLGsxT9bQ6/PION2a0f5sPLIpKSQ/oNvg3ABifT+g= X-Received: by 2002:a17:907:9713:b0:ab7:5fcd:d4be with SMTP id a640c23a62f3a-abc099c6a2dmr860153266b.1.1740553077936; Tue, 25 Feb 2025 22:57:57 -0800 (PST) MIME-Version: 1.0 References: <43712AD8-AF1C-4E2D-9AC7-A37BA7A752B6@yandex-team.ru> In-Reply-To: From: Maxim Orlov Date: Wed, 26 Feb 2025 09:57:45 +0300 X-Gm-Features: AQ5f1JpbMdNCPbbaT3VBIo1dHFt_ORAk6MAv35w-Lv6lkaVpQFxoN91mVooJ9pk Message-ID: Subject: Re: Spinlock can be released twice in procsignal.c To: Michael Paquier Cc: Andrey Borodin , "Maksim.Melnikov" , PostgreSQL Hackers , Heikki Linnakangas , Jelte Fennema-Nio Content-Type: multipart/mixed; boundary="000000000000ecc128062f0617a6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ecc128062f0617a6 Content-Type: multipart/alternative; boundary="000000000000ecc127062f0617a4" --000000000000ecc127062f0617a4 Content-Type: text/plain; charset="UTF-8" On Wed, 26 Feb 2025 at 07:56, Michael Paquier wrote: > > This fix is not correct. No system function calls (well basically > most of them) or even more no PostgreSQL-specific calls should happen > while holding a spinlock. elog() is a good example of what not to do. > One example: imagine a palloc failure while holding this spinlock in > this elog(). Indeed. PFA the correct one. -- Best regards, Maxim Orlov. --000000000000ecc127062f0617a4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Wed, 26 Feb 2025= at 07:56, Michael Paquier <micha= el@paquier.xyz> wrote:

This fix is not correct.=C2=A0 No system function calls (well basically
most of them) or even more no PostgreSQL-specific calls should happen
while holding a spinlock.=C2=A0 elog() is a good example of what not to do.=
One example: imagine a palloc failure while holding this spinlock in
this elog().

Indeed. PFA the correct one.


--
Best regards,
Maxim Orlov.
--000000000000ecc127062f0617a4-- --000000000000ecc128062f0617a6 Content-Type: application/octet-stream; name="v2-0001-Avoid-double-spinlock-release.patch" Content-Disposition: attachment; filename="v2-0001-Avoid-double-spinlock-release.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7lk5muj0 RnJvbSBjZTQxNzQ5ZTdkZjgzMzliNWMxYzkwYTQyMzM2ZjQ1ZDQ0MDAyOGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjYgRmViIDIwMjUgMDk6NDI6NDMgKzAzMDAKU3ViamVjdDogW1BBVENIIHYyXSBBdm9p ZCBkb3VibGUgc3BpbmxvY2sgcmVsZWFzZQoKLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMgfCAxNCArKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0 aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK aW5kZXggNzQwMWI2ZTYyNWUuLjZlOWY5YzBmMmU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCkBAIC0xNjcsNiArMTY3LDcgQEAgUHJvY1NpZ25hbEluaXQoYm9vbCBjYW5jZWxf a2V5X3ZhbGlkLCBpbnQzMiBjYW5jZWxfa2V5KQogewogCVByb2NTaWduYWxTbG90ICpzbG90Owog CXVpbnQ2NAkJYmFycmllcl9nZW5lcmF0aW9uOworCWJvb2wJCWxvZ2l0OwogCiAJaWYgKE15UHJv Y051bWJlciA8IDApCiAJCWVsb2coRVJST1IsICJNeVByb2NOdW1iZXIgbm90IHNldCIpOwpAQCAt MTc2LDEyICsxNzcsNyBAQCBQcm9jU2lnbmFsSW5pdChib29sIGNhbmNlbF9rZXlfdmFsaWQsIGlu dDMyIGNhbmNlbF9rZXkpCiAKIAkvKiBzYW5pdHkgY2hlY2sgKi8KIAlTcGluTG9ja0FjcXVpcmUo JnNsb3QtPnBzc19tdXRleCk7Ci0JaWYgKHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3Bp ZCkgIT0gMCkKLQl7Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJZWxv ZyhMT0csICJwcm9jZXNzICVkIHRha2luZyBvdmVyIFByb2NTaWduYWwgc2xvdCAlZCwgYnV0IGl0 J3Mgbm90IGVtcHR5IiwKLQkJCSBNeVByb2NQaWQsIE15UHJvY051bWJlcik7Ci0JfQorCWxvZ2l0 ID0gcGdfYXRvbWljX3JlYWRfdTMyKCZzbG90LT5wc3NfcGlkKSAhPSAwOwogCiAJLyogQ2xlYXIg b3V0IGFueSBsZWZ0b3ZlciBzaWduYWwgcmVhc29ucyAqLwogCU1lbVNldChzbG90LT5wc3Nfc2ln bmFsRmxhZ3MsIDAsIE5VTV9QUk9DU0lHTkFMUyAqIHNpemVvZihzaWdfYXRvbWljX3QpKTsKQEAg LTIwOCw2ICsyMDQsMTIgQEAgUHJvY1NpZ25hbEluaXQoYm9vbCBjYW5jZWxfa2V5X3ZhbGlkLCBp bnQzMiBjYW5jZWxfa2V5KQogCiAJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwog CisJaWYgKGxvZ2l0KQorCXsKKwkJZWxvZyhMT0csICJwcm9jZXNzICVkIHRha2luZyBvdmVyIFBy b2NTaWduYWwgc2xvdCAlZCwgYnV0IGl0J3Mgbm90IGVtcHR5IiwKKwkJCSBNeVByb2NQaWQsIE15 UHJvY051bWJlcik7CisJfQorCiAJLyogUmVtZW1iZXIgc2xvdCBsb2NhdGlvbiBmb3IgQ2hlY2tQ cm9jU2lnbmFsICovCiAJTXlQcm9jU2lnbmFsU2xvdCA9IHNsb3Q7CiAKLS0gCjIuNDguMQoK --000000000000ecc128062f0617a6--