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 1vAWzN-002iAB-Fh for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Oct 2025 17:14:37 +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 1vAWzJ-00Bb5G-QT for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Oct 2025 17:14:32 +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.94.2) (envelope-from ) id 1vAWzJ-00Bb56-5O for pgsql-hackers@lists.postgresql.org; Sun, 19 Oct 2025 17:14:32 +0000 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1vAWzF-002e7p-2x for pgsql-hackers@postgresql.org; Sun, 19 Oct 2025 17:14:31 +0000 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id B1F101D000AB; Sun, 19 Oct 2025 13:14:28 -0400 (EDT) Received: from phl-imap-03 ([10.202.2.93]) by phl-compute-04.internal (MEProxy); Sun, 19 Oct 2025 13:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1760894068; x=1760980468; bh=kA4RD7tk3Q wz/hIry0ygx6pJF/TYcQuxqUR2ILRbXgE=; b=XApteXEk2WqTnejdU1PS3LYnTg xpA2F3ReDFmybFxKURdrZ8V0UJCkgdwAnCm6Ok3jy7/ueq6CwVej4Vwuwa/NIQn0 Mkgcl9cgjJ9fQO9KW/zrx6LkLMtzwhz2YiZsbKoE2dWFM59Qut9pV4EYIgXZ+U1J SZlZwHUi7pjKYjoWQLqWa+Td6pOnLOAeWat8qiXUABG/piwF4WPiwQ3fQMsvE1vm f8qXUWHHOz2CJuo3XOKT+wjbFDiyhd8NNnXrA1G9TQ1ZdeOP9mnJVCsvGtn8kZlc FE1mzpYw39+K58MZIKFnUhMhSSYTJ+wmpEBNg5i2ZrZuFh9s290w1YM/JeWw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1760894068; x=1760980468; bh=kA4RD7tk3Qwz/hIry0ygx6pJF/TYcQuxqUR 2ILRbXgE=; b=gu36t95/WRQdYpVp5nFhX6YvcRdhowp3v20Bm5HuAGybvEa2GWi UGVTtqCbjDz59u/D5WyMgN7bWqQ2w8rSKnZP7Lf9OPp6+9BXw8eViiDKfK60diZx 0hO8tnuODkf/gtCDONy9R/LNjnrmTexIvt2OvaL8AvJ8kzs5QuPhGVVDbeLKerSx x/9diy62ysT7DTvB/INj9WhLpYRb6uBFvBxBJsSpSHx0LzwwgW/cV7jChGY05MpL FYHIveJe8d8peT+Rogc93465vSjOjP8CAoNY3QFS8c06y7dqPeQpTLzz+fttXHrj Hp3yX1NE0NpOKfONrSaHr9XHuXLIZ3U/SLA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddufeehheduucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvfevkfgjfhfutgesmhdtreerredtjeenucfhrhhomhepfdflohgvlhcu lfgrtghosghsohhnfdcuoehjohgvlhestghomhhpihhlvghrrdhorhhgqeenucggtffrrg htthgvrhhnpeelieeufeevleejleekgeeuvddtgfegfedtgeeutdejjeekvdevtddvueet kedvleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hjohgvlhestghomhhpihhlvghrrdhorhhgpdhnsggprhgtphhtthhopedutddpmhhouggv pehsmhhtphhouhhtpdhrtghpthhtohepfegurghnihhsshhimhhosehgmhgrihhlrdgtoh hmpdhrtghpthhtoheprghlvgigrghnughrrgdrfigrnhhgrdhoshhssehgmhgrihhlrdgt ohhmpdhrtghpthhtoheprghrshgvnhhihidrmhhukhhhihhnrdguvghvsehgmhgrihhlrd gtohhmpdhrtghpthhtohepmhgrthhhvghushhsshhilhhvleejsehgmhgrihhlrdgtohhm pdhrtghpthhtoheprhhishhhuhdrphhoshhtghhrvghssehgmhgrihhlrdgtohhmpdhrtg hpthhtohepshgrfigruggrrdhmshhhkhesghhmrghilhdrtghomhdprhgtphhtthhopegr lhhvhhgvrhhrvgeskhhurhhilhgvmhhurdguvgdprhgtphhtthhopeihrdhsohhkohhloh hvsehpohhsthhgrhgvshhprhhordhruhdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgv rhhssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 6A73E18E0054; Sun, 19 Oct 2025 13:14:27 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AYKEI1WM5q2o Date: Sun, 19 Oct 2025 19:14:07 +0200 From: "Joel Jacobson" To: =?UTF-8?Q?=C3=81lvaro_Herrera?= , "Arseniy Mukhin" Cc: "Matheus Alcantara" , "Masahiko Sawada" , "Rishu Bagga" , "Yura Sokolov" , "Daniil Davydov" <3danissimo@gmail.com>, "Alexandra Wang" , pgsql-hackers , "Tom Lane" Message-Id: <25651193-da4e-4185-a564-f2efa6b0c8a4@app.fastmail.com> In-Reply-To: <202510171347.twmkbitfsgfh@alvherre.pgsql> References: <202510171347.twmkbitfsgfh@alvherre.pgsql> Subject: Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue Content-Type: multipart/mixed; boundary=5a2a981a20df443f9285edb925f3df9c List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --5a2a981a20df443f9285edb925f3df9c Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Fri, Oct 17, 2025, at 15:51, =C3=81lvaro Herrera wrote: > I have the impression that this thread has lost focus on the idea of > producing a backpatchable bugfix. The last proposed patch has a lot of > new mechanism that doesn't seem suitable for backpatch. I could be > wrong of course. I've tried to create a minimal isolated fix, hopefully suitable for backpatching, with no new mechanisms, other than the added GetOldestQueuedNotifyXid used by vac_update_datfrozenxid. It's based on the approach discussed earlier in this thread, that just goes through the notification queue from QUEUE_TAIL to QUEUE_HEAD, to find the oldestXid in the current database. Implementation: * Break out SLRU read page code from asyncQueueReadAllNotifications into new helper-function asyncQueueReadPageToBuffer. * Add GetOldestQueuedNotifyXid which uses the new helper-function asyncQueueReadPageToBuffer. It passes the 001_xid_freeze.pl test, not included in this patch. /Joel --5a2a981a20df443f9285edb925f3df9c Content-Disposition: attachment; filename="fix_notify_datfrozenxid.txt" Content-Type: text/plain; name="fix_notify_datfrozenxid.txt" Content-Transfer-Encoding: base64 RnJvbSAzMWZmMGI3YzM1MzIwYWZhY2YzMDY4NWMwMDZmMTdkNmRlMTc5NDIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9y Zz4KRGF0ZTogU3VuLCAxOSBPY3QgMjAyNSAxODo1NToyNSArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIFByZXZlbnQgVkFDVVVNIGZyb20gdHJ1bmNhdGluZyBYSURzIHN0aWxsIHByZXNlbnQg aW4KIG5vdGlmaWNhdGlvbiBxdWV1ZQoKVkFDVVVNJ3MgY29tcHV0YXRpb24gb2YgZGF0ZnJv emVueGlkIGRpZCBub3QgYWNjb3VudCBmb3IgdHJhbnNhY3Rpb24gSURzCmluIHRoZSBMSVNU RU4vTk9USUZZIHF1ZXVlLiAgVGhpcyBhbGxvd2VkIFZBQ1VVTSB0byB0cnVuY2F0ZSBjbG9n CmVudHJpZXMgZm9yIFhJRHMgdGhhdCB3ZXJlIHN0aWxsIHJlZmVyZW5jZWQgYnkgcXVldWVk IG5vdGlmaWNhdGlvbnMsCmNhdXNpbmcgYmFja2VuZHMgdG8gZmFpbCBpbiBUcmFuc2FjdGlv bklkRGlkQ29tbWl0IHdoZW4gbGF0ZXIgcHJvY2Vzc2luZwp0aG9zZSBub3RpZmljYXRpb25z LgoKRml4IGJ5IGFkZGluZyBHZXRPbGRlc3RRdWV1ZWROb3RpZnlYaWQgdG8gZmluZCB0aGUg b2xkZXN0IFhJRCBpbiBxdWV1ZWQKbm90aWZpY2F0aW9ucyBmb3IgdGhlIGN1cnJlbnQgZGF0 YWJhc2UsIGFuZCBjb25zdHJhaW5pbmcgZGF0ZnJvemVueGlkIHRvCm5vdCBwYXNzIHRoYXQu ICBUaGUgZnVuY3Rpb24gc2NhbnMgZnJvbSBRVUVVRV9UQUlMLCBzaW5jZSBub3RpZmljYXRp b25zCm1heSBoYXZlIGJlZW4gd3JpdHRlbiBiZWZvcmUgYW55IGxpc3RlbmVycyBleGlzdGVk LgoKVG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbiwgcmVmYWN0b3IgU0xSVSBwYWdlLXJlYWRp bmcgY29kZSBpbnRvIGEgbmV3CmhlbHBlciBmdW5jdGlvbiBhc3luY1F1ZXVlUmVhZFBhZ2VU b0J1ZmZlci4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICB8IDEzOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYyB8ICAxNCArKysrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oICB8ICAg MyArCiAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCA0YmQzN2Q1YmViNS4uN2M5ZDc4MzFjOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMTg0MSw2ICsxODQxLDQ0IEBAIFByb2Nlc3NO b3RpZnlJbnRlcnJ1cHQoYm9vbCBmbHVzaCkKIAkJUHJvY2Vzc0luY29taW5nTm90aWZ5KGZs dXNoKTsKIH0KIAorLyoKKyAqIFJlYWQgYSBwYWdlIGZyb20gdGhlIFNMUlUgcXVldWUgaW50 byBhIGxvY2FsIGJ1ZmZlci4KKyAqCisgKiBSZWFkcyB0aGUgcGFnZSBjb250YWluaW5nICdw b3MnLCBjb3B5aW5nIHRoZSBkYXRhIGZyb20gdGhlIGN1cnJlbnQgb2Zmc2V0CisgKiBlaXRo ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZSBvciB1cCB0byAnaGVhZCcgKHdoaWNoZXZlciBj b21lcyBmaXJzdCkKKyAqIGludG8gcGFnZV9idWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCith c3luY1F1ZXVlUmVhZFBhZ2VUb0J1ZmZlcihRdWV1ZVBvc2l0aW9uIHBvcywgUXVldWVQb3Np dGlvbiBoZWFkLAorCQkJCQkJICAgY2hhciAqcGFnZV9idWZmZXIpCit7CisJaW50NjQJCWN1 cnBhZ2UgPSBRVUVVRV9QT1NfUEFHRShwb3MpOworCWludAkJCWN1cm9mZnNldCA9IFFVRVVF X1BPU19PRkZTRVQocG9zKTsKKwlpbnQJCQlzbG90bm87CisJaW50CQkJY29weXNpemU7CisK KwlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShOb3RpZnlDdGwsIGN1cnBh Z2UsCisJCQkJCQkJCQkJSW52YWxpZFRyYW5zYWN0aW9uSWQpOworCisJaWYgKGN1cnBhZ2Ug PT0gUVVFVUVfUE9TX1BBR0UoaGVhZCkpCisJeworCQkvKiB3ZSBvbmx5IHdhbnQgdG8gcmVh ZCBhcyBmYXIgYXMgaGVhZCAqLworCQljb3B5c2l6ZSA9IFFVRVVFX1BPU19PRkZTRVQoaGVh ZCkgLSBjdXJvZmZzZXQ7CisJCWlmIChjb3B5c2l6ZSA8IDApCisJCQljb3B5c2l6ZSA9IDA7 CQkvKiBqdXN0IGZvciBzYWZldHkgKi8KKwl9CisJZWxzZQorCXsKKwkJLyogZmV0Y2ggYWxs IHRoZSByZXN0IG9mIHRoZSBwYWdlICovCisJCWNvcHlzaXplID0gUVVFVUVfUEFHRVNJWkUg LSBjdXJvZmZzZXQ7CisJfQorCisJbWVtY3B5KHBhZ2VfYnVmZmVyICsgY3Vyb2Zmc2V0LAor CQkgICBOb3RpZnlDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIGN1cm9mZnNl dCwKKwkJICAgY29weXNpemUpOworCS8qIFJlbGVhc2UgbG9jayB0aGF0IHdlIGdvdCBmcm9t IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5KCkgKi8KKwlMV0xvY2tSZWxlYXNlKFNpbXBs ZUxydUdldEJhbmtMb2NrKE5vdGlmeUN0bCwgY3VycGFnZSkpOworfQogCiAvKgogICogUmVh ZCBhbGwgcGVuZGluZyBub3RpZmljYXRpb25zIGZyb20gdGhlIHF1ZXVlLCBhbmQgZGVsaXZl ciBhcHByb3ByaWF0ZQpAQCAtMTkzMiwzNiArMTk3MCwxMyBAQCBhc3luY1F1ZXVlUmVhZEFs bE5vdGlmaWNhdGlvbnModm9pZCkKIAogCQlkbwogCQl7Ci0JCQlpbnQ2NAkJY3VycGFnZSA9 IFFVRVVFX1BPU19QQUdFKHBvcyk7Ci0JCQlpbnQJCQljdXJvZmZzZXQgPSBRVUVVRV9QT1Nf T0ZGU0VUKHBvcyk7Ci0JCQlpbnQJCQlzbG90bm87Ci0JCQlpbnQJCQljb3B5c2l6ZTsKLQog CQkJLyoKIAkJCSAqIFdlIGNvcHkgdGhlIGRhdGEgZnJvbSBTTFJVIGludG8gYSBsb2NhbCBi dWZmZXIsIHNvIGFzIHRvIGF2b2lkCiAJCQkgKiBob2xkaW5nIHRoZSBTTFJVIGxvY2sgd2hp bGUgd2UgYXJlIGV4YW1pbmluZyB0aGUgZW50cmllcyBhbmQKIAkJCSAqIHBvc3NpYmx5IHRy YW5zbWl0dGluZyB0aGVtIHRvIG91ciBmcm9udGVuZC4gIENvcHkgb25seSB0aGUgcGFydAog CQkJICogb2YgdGhlIHBhZ2Ugd2Ugd2lsbCBhY3R1YWxseSBpbnNwZWN0LgogCQkJICovCi0J CQlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShOb3RpZnlDdGwsIGN1cnBh Z2UsCi0JCQkJCQkJCQkJCQlJbnZhbGlkVHJhbnNhY3Rpb25JZCk7Ci0JCQlpZiAoY3VycGFn ZSA9PSBRVUVVRV9QT1NfUEFHRShoZWFkKSkKLQkJCXsKLQkJCQkvKiB3ZSBvbmx5IHdhbnQg dG8gcmVhZCBhcyBmYXIgYXMgaGVhZCAqLwotCQkJCWNvcHlzaXplID0gUVVFVUVfUE9TX09G RlNFVChoZWFkKSAtIGN1cm9mZnNldDsKLQkJCQlpZiAoY29weXNpemUgPCAwKQotCQkJCQlj b3B5c2l6ZSA9IDA7CS8qIGp1c3QgZm9yIHNhZmV0eSAqLwotCQkJfQotCQkJZWxzZQotCQkJ ewotCQkJCS8qIGZldGNoIGFsbCB0aGUgcmVzdCBvZiB0aGUgcGFnZSAqLwotCQkJCWNvcHlz aXplID0gUVVFVUVfUEFHRVNJWkUgLSBjdXJvZmZzZXQ7Ci0JCQl9Ci0JCQltZW1jcHkocGFn ZV9idWZmZXIuYnVmICsgY3Vyb2Zmc2V0LAotCQkJCSAgIE5vdGlmeUN0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dICsgY3Vyb2Zmc2V0LAotCQkJCSAgIGNvcHlzaXplKTsKLQkJ CS8qIFJlbGVhc2UgbG9jayB0aGF0IHdlIGdvdCBmcm9tIFNpbXBsZUxydVJlYWRQYWdlX1Jl YWRPbmx5KCkgKi8KLQkJCUxXTG9ja1JlbGVhc2UoU2ltcGxlTHJ1R2V0QmFua0xvY2soTm90 aWZ5Q3RsLCBjdXJwYWdlKSk7CisJCQlhc3luY1F1ZXVlUmVhZFBhZ2VUb0J1ZmZlcihwb3Ms IGhlYWQsIHBhZ2VfYnVmZmVyLmJ1Zik7CiAKIAkJCS8qCiAJCQkgKiBQcm9jZXNzIG1lc3Nh Z2VzIHVwIHRvIHRoZSBzdG9wIHBvc2l0aW9uLCBlbmQgb2YgcGFnZSwgb3IgYW4KQEAgLTIw OTcsNiArMjExMiw4MiBAQCBhc3luY1F1ZXVlUHJvY2Vzc1BhZ2VFbnRyaWVzKHZvbGF0aWxl IFF1ZXVlUG9zaXRpb24gKmN1cnJlbnQsCiAJcmV0dXJuIHJlYWNoZWRTdG9wOwogfQogCisv KgorICogR2V0IHRoZSBvbGRlc3QgWElEIGluIHRoZSBub3RpZmljYXRpb24gcXVldWUgdGhh dCBoYXMgbm90IHlldCBiZWVuCisgKiBwcm9jZXNzZWQgYnkgYWxsIGxpc3RlbmluZyBiYWNr ZW5kcy4KKyAqCisgKiBSZXR1cm5zIEludmFsaWRUcmFuc2FjdGlvbklkIGlmIHRoZXJlIGFy ZSBubyB1bnByb2Nlc3NlZCBub3RpZmljYXRpb25zLgorICovCitUcmFuc2FjdGlvbklkCitH ZXRPbGRlc3RRdWV1ZWROb3RpZnlYaWQodm9pZCkKK3sKKwlRdWV1ZVBvc2l0aW9uIHBvczsK KwlRdWV1ZVBvc2l0aW9uIGhlYWQ7CisJVHJhbnNhY3Rpb25JZCBvbGRlc3RYaWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKKworCS8qIHBhZ2VfYnVmZmVyIG11c3QgYmUgYWRlcXVhdGVs eSBhbGlnbmVkLCBzbyB1c2UgYSB1bmlvbiAqLworCXVuaW9uCisJeworCQljaGFyCQlidWZb UVVFVUVfUEFHRVNJWkVdOworCQlBc3luY1F1ZXVlRW50cnkgYWxpZ247CisJfQkJCXBhZ2Vf YnVmZmVyOworCisJTFdMb2NrQWNxdWlyZShOb3RpZnlRdWV1ZUxvY2ssIExXX0VYQ0xVU0lW RSk7CisKKwkvKgorCSAqIFdlIG11c3Qgc3RhcnQgYXQgUVVFVUVfVEFJTCBzaW5jZSBub3Rp ZmljYXRpb24gZGF0YSBtaWdodCBoYXZlIGJlZW4KKwkgKiB3cml0dGVuIGJlZm9yZSB0aGVy ZSB3ZXJlIGFueSBsaXN0ZW5pbmcgYmFja2VuZHMuCisJICovCisJcG9zID0gUVVFVUVfVEFJ TDsKKwloZWFkID0gUVVFVUVfSEVBRDsKKworCS8qIElmIHRoZSBxdWV1ZSBpcyBlbXB0eSwg bm8gWElEcyBuZWVkIHByb3RlY3Rpb24gKi8KKwlpZiAoUVVFVUVfUE9TX0VRVUFMKHBvcywg aGVhZCkpCisJeworCQlMV0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CisJCXJldHVy biBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl9CisKKwl3aGlsZSAoIVFVRVVFX1BPU19FUVVB TChwb3MsIGhlYWQpKQorCXsKKwkJaW50CQkJY3Vyb2Zmc2V0OworCQlBc3luY1F1ZXVlRW50 cnkgKnFlOworCisJCS8qIFJlYWQgdGhlIGN1cnJlbnQgcGFnZSBmcm9tIFNMUlUgaW50byBv dXIgbG9jYWwgYnVmZmVyICovCisJCWFzeW5jUXVldWVSZWFkUGFnZVRvQnVmZmVyKHBvcywg aGVhZCwgcGFnZV9idWZmZXIuYnVmKTsKKworCQljdXJvZmZzZXQgPSBRVUVVRV9QT1NfT0ZG U0VUKHBvcyk7CisKKwkJLyogUHJvY2VzcyBhbGwgZW50cmllcyBvbiB0aGlzIHBhZ2UgdXAg dG8gaGVhZCAqLworCQl3aGlsZSAoY3Vyb2Zmc2V0ICsgUVVFVUVBTElHTihBc3luY1F1ZXVl RW50cnlFbXB0eVNpemUpIDw9IFFVRVVFX1BBR0VTSVpFICYmCisJCQkgICAhUVVFVUVfUE9T X0VRVUFMKHBvcywgaGVhZCkpCisJCXsKKwkJCXFlID0gKEFzeW5jUXVldWVFbnRyeSAqKSAo cGFnZV9idWZmZXIuYnVmICsgY3Vyb2Zmc2V0KTsKKworCQkJLyoKKwkJCSAqIENoZWNrIGlm IHRoaXMgZW50cnkgaXMgZm9yIG91ciBkYXRhYmFzZSBhbmQgaGFzIGEgdmFsaWQgWElELgor CQkJICogT25seSBlbnRyaWVzIGZvciBvdXIgZGF0YWJhc2UgbWF0dGVyIGZvciBvdXIgZGF0 ZnJvemVueGlkLgorCQkJICovCisJCQlpZiAocWUtPmRib2lkID09IE15RGF0YWJhc2VJZCAm JiBUcmFuc2FjdGlvbklkSXNWYWxpZChxZS0+eGlkKSkKKwkJCXsKKwkJCQlpZiAoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKG9sZGVzdFhpZCkgfHwKKwkJCQkJVHJhbnNhY3Rpb25JZFByZWNl ZGVzKHFlLT54aWQsIG9sZGVzdFhpZCkpCisJCQkJCW9sZGVzdFhpZCA9IHFlLT54aWQ7CisJ CQl9CisKKwkJCS8qIEFkdmFuY2UgdG8gbmV4dCBlbnRyeSAqLworCQkJaWYgKGFzeW5jUXVl dWVBZHZhbmNlKCZwb3MsIHFlLT5sZW5ndGgpKQorCQkJCWJyZWFrOwkJCS8qIGFkdmFuY2Vk IHRvIG5leHQgcGFnZSAqLworCisJCQljdXJvZmZzZXQgPSBRVUVVRV9QT1NfT0ZGU0VUKHBv cyk7CisJCX0KKwl9CisKKwlMV0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CisKKwly ZXR1cm4gb2xkZXN0WGlkOworfQorCiAvKgogICogQWR2YW5jZSB0aGUgc2hhcmVkIHF1ZXVl IHRhaWwgdmFyaWFibGUgdG8gdGhlIG1pbmltdW0gb2YgYWxsIHRoZQogICogcGVyLWJhY2tl bmQgdGFpbCBwb2ludGVycy4gIFRydW5jYXRlIHBnX25vdGlmeSBzcGFjZSBpZiBwb3NzaWJs ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggZWQwM2UzYmQ1MGQuLjRmMjc4YzZiOTg4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NsdXN0ZXIuaCIKICNpbmNsdWRlICJj b21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgpAQCAt MTczMyw2ICsxNzM0LDE5IEBAIHZhY191cGRhdGVfZGF0ZnJvemVueGlkKHZvaWQpCiAJaWYg KGJvZ3VzKQogCQlyZXR1cm47CiAKKwkvKgorCSAqIEFsc28gY29uc2lkZXIgdGhlIG9sZGVz dCBYSUQgaW4gdGhlIG5vdGlmaWNhdGlvbiBxdWV1ZSwgc2luY2UKKwkgKiBiYWNrZW5kcyB3 aWxsIG5lZWQgdG8gY2FsbCBUcmFuc2FjdGlvbklkRGlkQ29tbWl0KCkgb24gdGhvc2UKKwkg KiBYSURzIHdoZW4gcHJvY2Vzc2luZyB0aGUgbm90aWZpY2F0aW9ucy4KKwkgKi8KKwl7CisJ CVRyYW5zYWN0aW9uSWQgb2xkZXN0Tm90aWZ5WGlkID0gR2V0T2xkZXN0UXVldWVkTm90aWZ5 WGlkKCk7CisKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKG9sZGVzdE5vdGlmeVhpZCkg JiYKKwkJCVRyYW5zYWN0aW9uSWRQcmVjZWRlcyhvbGRlc3ROb3RpZnlYaWQsIG5ld0Zyb3pl blhpZCkpCisJCQluZXdGcm96ZW5YaWQgPSBvbGRlc3ROb3RpZnlYaWQ7CisJfQorCiAJQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc05vcm1hbChuZXdGcm96ZW5YaWQpKTsKIAlBc3NlcnQoTXVs dGlYYWN0SWRJc1ZhbGlkKG5ld01pbk11bHRpKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2FzeW5jLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCmlu ZGV4IGY3NWMzZGY5NTU2Li5kNzA3ZjUxNjMxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvYXN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCkBA IC0yNiw2ICsyNiw5IEBAIGV4dGVybiB2b2lkIE5vdGlmeU15RnJvbnRFbmQoY29uc3QgY2hh ciAqY2hhbm5lbCwKIAkJCQkJCQkgY29uc3QgY2hhciAqcGF5bG9hZCwKIAkJCQkJCQkgaW50 MzIgc3JjUGlkKTsKIAorLyogZ2V0IG9sZGVzdCBYSUQgaW4gdGhlIG5vdGlmaWNhdGlvbiBx dWV1ZSBmb3IgdmFjdXVtICovCitleHRlcm4gVHJhbnNhY3Rpb25JZCBHZXRPbGRlc3RRdWV1 ZWROb3RpZnlYaWQodm9pZCk7CisKIC8qIG5vdGlmeS1yZWxhdGVkIFNRTCBzdGF0ZW1lbnRz ICovCiBleHRlcm4gdm9pZCBBc3luY19Ob3RpZnkoY29uc3QgY2hhciAqY2hhbm5lbCwgY29u c3QgY2hhciAqcGF5bG9hZCk7CiBleHRlcm4gdm9pZCBBc3luY19MaXN0ZW4oY29uc3QgY2hh ciAqY2hhbm5lbCk7Ci0tIAoyLjUwLjEKCg== --5a2a981a20df443f9285edb925f3df9c--