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 1wQ1dF-001ED1-06 for pgsql-bugs@arkaria.postgresql.org; Thu, 21 May 2026 11:32:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wQ1dD-009wKf-0A for pgsql-bugs@arkaria.postgresql.org; Thu, 21 May 2026 11:32:03 +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.96) (envelope-from ) id 1wQ1dC-009wKX-2N for pgsql-bugs@lists.postgresql.org; Thu, 21 May 2026 11:32:03 +0000 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wQ1dB-00000000ive-0PHx for pgsql-bugs@lists.postgresql.org; Thu, 21 May 2026 11:32:03 +0000 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7dca5f64e86so4917908a34.0 for ; Thu, 21 May 2026 04:32:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779363118; cv=none; d=google.com; s=arc-20240605; b=jGH41YpFGv9X4OETPPgRvyr0iK+a27JY+oy3yIBRJIwHO7PMaUK/cYPxrgZfP7Zlk8 OZsLaXFD9MN36Ll70IyF4tztTp0KF4/ssGnjXoKDrfISZjKVYzli5ldIPrcPPxJLuMWF Rqr2+j5/+K4c7WMV+L/Tg+gt0r8MxJpI9jHdFk46kNory5GlE/wfv4wVcUPo50wMghP7 iL94Wi43O9llgSQhyJnDMJS+BRpg1EglmR/h6SXNmGseE7sK8wPb9M0v3BdacDO7G0is 8a28YLMu8/VA62VHR69GfNuFtjwaxzVjBKmogbfK1KhUDJelbsnb70IEZW3nvGQmYGJh fhEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=v7Q/Lw+LsiIZ3tnwhWTRgDoPvE/5IG0joH7p3+UiYkM=; fh=2QjOwy5WfaXPCjIjfaJq1c0tSCU3QoNxyqOMnGzCOmc=; b=lrF8tXc483OI/gmFq472CsWiMf7wRyscik6vZ/b3TVeFpSWDvdCj4Hpp0AUBL/41YR i+U25AjMoomxmahqsqK/jMtkiLXg3hPHC9+GbXJvwsJaMGL8ZiWCC+4DWrdR2/VEPuQr OHmR1+Ud5/4PrRYVglMmFXeuu7JbRHav87feqVrTKuyKz2sel+cH85V8bgPAB23e2yuS 7rhfwCgnccoSa7m5bME+c8lsZJiC/+ySWyyHfEdVAmKGxdRijCfsXdhoDO3v6fw4Tpf/ HTcE+hoG0wRW/Ip6/J7m184Vv2d8bJqyxF4q3iDESF82IX4Vd2ozWyKbiT4xLoB1ayUZ vW/Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779363118; x=1779967918; 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=v7Q/Lw+LsiIZ3tnwhWTRgDoPvE/5IG0joH7p3+UiYkM=; b=GdLZtZJ8MnNqBDiHUpXcUPR3phHGtFT4s5qYxXEJ6eaN6lS8ifcPhp40hTHchw36FM OjunYAQ2GG7rqM7OD1e8rR5zNL+7bYNUOti31RAtQvBLqXnYORT2r9On2D2QplZMQZPs PE9EcSCnVJ3OzpirfHqGxeriltNrQFanFcfsnodtr11aWjTefMekCb7xyQDJXqOO5KlX v2RAIMEmvAYQzCS4onE8nwtJQrP0oyFyJBhmv0uZIPksjX9LjLrImEW4WPU6h/3L2rRH /34zgLIBbvSInUf+G1f3ur2MpjlUdk5bXGc+TcP+vBCqgwWv+KX1+Dzb4dI2/gUpPoMI vufw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779363118; x=1779967918; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=v7Q/Lw+LsiIZ3tnwhWTRgDoPvE/5IG0joH7p3+UiYkM=; b=Ki+2loDWw/5VOxvoARDje7/drXkePA+qsr2dBurRV4nhWzc8ky2lHSxS3dbpphpQjL RZmCcJ8ue8igcZe+xjCPM/hEZyAk6UrX36KLN9ZyyiWFuuJehTwWYqBmfRQiG1Bfe8Fq 5u27zEZQ3KwW418ST0WBtS5vWW82KUdbOqeJ3a6LFQR5NS/FB+AaKYeTLyo0gRQPtnNQ xPfQCRaDd8HiDf+PT+jI95yvsYAimDUfmWpaMtIPcD37nsOkV/XP9SofwuC/1a/fkDoY R5wqejsuJIA2OBKIWWVesNfpdfoNR/qB0YZIrU3Syzu+cv2x2VmMgcU7q4u7R/t8oK3B p9Ww== X-Forwarded-Encrypted: i=1; AFNElJ/yKZwt92lmJJOvQySXdsAiPYTLvsNFVB3uZt9dmng7pDpkstnvBwXP9TdQd14L2TXhTe8ZRvUiruF9@lists.postgresql.org X-Gm-Message-State: AOJu0YzD6E1q7+MDc3UDQ45xiBgskkKrDKBbVKHvft3A2O0Fhb3xcSb9 GeclNqqg3/iRjnozrkAQXojdBzFOrqhqyRzea0OX5vwkt41kdaRy6wqSprQg+HWnoXX8stQd4Sk gmv266AuUjCLHbgexwhb2x1sAArgVjmg= X-Gm-Gg: Acq92OF0U8XElPQAMrzRTb5vtgQX8GP6paxuHVXJt4jLCw3GkeOtuxn1G2jDmWuoDnI 8mAu33uHdpE82mIjOccGWalVh4FUbjkideUofFl0cVEF4fFbPGR2N7BFdZfsPJIfeipyQOknh7D +bxCmWatLBPcOQf/bi6L4r7YeUYcJZmIAKA2ibva8k+vtw2xQbWTPj3PcOhWXPpKkrYdMKmF87f BHb5VWqBGRasXLdUJr0THuwRgHJP9eWuTBoGzUNnXu9C5LBVOV1Zc3UQhmN5nAP+MX3Vac3Vlsi kMcHmNC/QQ0zpHNCVV+Im9p1VOo+rzHjBpmb+VFl1sxl4BXmHGI7Lb0Vxd2io9pF6JkfQjrrXOw LI2977A== X-Received: by 2002:a05:6820:3104:b0:69b:94ac:da2d with SMTP id 006d021491bc7-69d6eeb0edemr1026935eaf.33.1779363118002; Thu, 21 May 2026 04:31:58 -0700 (PDT) MIME-Version: 1.0 References: <19488-d7ccfca2bf6b74b0@postgresql.org> In-Reply-To: From: Alexander Korotkov Date: Thu, 21 May 2026 14:31:44 +0300 X-Gm-Features: AVHnY4KQX3DsflIELSCyjX--5sv_c32CWZR2hbtC2vtABmsaul0WVipReKkoeJ4 Message-ID: Subject: Re: BUG #19488: Standby connection fails after dropping on login event trigger enabled always To: Ayush Tiwari Cc: Fujii Masao , kyzevan23@mail.ru, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000946c05065252422e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000946c05065252422e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, May 21, 2026 at 11:10=E2=80=AFAM Ayush Tiwari wrote: > On Wed, 20 May 2026 at 18:15, Ayush Tiwari = wrote: >> >> Hi, >> >> On Wed, 20 May 2026 at 17:35, Fujii Masao wrote: >>> >>> On Wed, May 20, 2026 at 8:31=E2=80=AFPM Alexander Korotkov wrote: >>> > >>> > On Wed, May 20, 2026 at 1:03=E2=80=AFPM Fujii Masao wrote: >>> > > On Wed, May 20, 2026 at 1:37=E2=80=AFPM Ayush Tiwari >>> > > wrote: >>> > > > Thanks for the report and the precise repro. >>> > > >>> > > +1 >>> > > >>> > > > Attached patch adds a RecoveryInProgress() check to skip the clea= nup >>> > > > branch on standbys. >>> > > >>> > > Thanks for investigating this issue and for the patch! >>> > > The patch looks good to me. >>> > > >>> > > > I think this needs to be backpatched too. >>> > > >>> > > Yes. Seems this should be backpatched to v17, where login event tri= ggers >>> > > were introduced. >>> > >>> > I've added a tap test reproducing the bug. I'm going to push and >>> > backpatch this to v17 if no objections. >>> >>> +# Wait for the standby to replay the CREATE/DROP catalog state. At >>> +# this point the standby's pg_database.dathasloginevt is still true. >>> +$primary->wait_for_replay_catchup($standby); >>> + >>> +# A new connection to the standby exercises EventTriggerOnLogin()'s >>> +# cleanup branch. With the RecoveryInProgress() guard, that branch is >>> +# skipped on the standby and the connection succeeds. Without it the >>> +# session aborts with a FATAL about AccessExclusiveLock. Probing the >>> +# flag itself via safe_psql is what triggers the cleanup path. >>> +is( $standby->safe_psql( >>> + 'postgres', >>> + "SELECT dathasloginevt FROM pg_database WHERE datname =3D 'postgres'"= ), >>> + 't', >>> + 'standby accepts connection and reports dangling dathasloginevt'); >>> >>> The test looks unstable to me. wait_for_replay_catchup() may connect to >>> the primary to obtain the flush LSN, which could cause dathasloginevt t= o >>> become false before the subsequent safe_psql() call on the standby. > > > I had registered this in commitfest, could see CI bot failing > https://commitfest.postgresql.org/patch/6790/ > >> my $drop_lsn =3D $primary->safe_psql( >> 'postgres', q{ >> BEGIN; >> DROP EVENT TRIGGER init_session; >> DROP FUNCTION init_session(); >> COMMIT; >> SELECT pg_current_wal_lsn(); >> }); >> >> $primary->wait_for_catchup($standby, 'replay', $drop_lsn); > > > Attaching v3 with this change on top of Alexander's changes. I suggest another approach. Create a separate test database and apply event trigger on it. wait_for_catchup() and others use 'postgres' database and wouldn't touch our test database. I also added check for successful clearance of the flag on both primary and standby. One issue spotted there: in-place heap update doesn't issue a WAL flush. But I think that's minor, WAL could be flushed by any subsequent operation. ------ Regards, Alexander Korotkov Supabase --000000000000946c05065252422e Content-Type: application/octet-stream; name="v4-0001-Skip-pg_database.dathasloginevt-cleanup-on-standb.patch" Content-Disposition: attachment; filename="v4-0001-Skip-pg_database.dathasloginevt-cleanup-on-standb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfertl10 RnJvbSAxZDJhODA5Mjc0ZTAyNjVjMjM0N2ZlMWNjZmJkNDMzNDQ0Yjk5NjdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAxNDoyMDo1MiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjRdIFNraXAgcGdfZGF0YWJhc2UuZGF0aGFzbG9naW5ldnQgY2xlYW51cCBvbiBzdGFu ZGJ5CgpFdmVudFRyaWdnZXJPbkxvZ2luKCkgdHJpZXMgdG8gY2xlYXIgcGdfZGF0YWJhc2UuZGF0 aGFzbG9naW5ldnQgd2hlbgp0aGUgZGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBhbnkgbG9naW4gZXZl bnQgdHJpZ2dlcnMgYnV0IHRoZSBmbGFnIGlzCnN0aWxsIHNldC4gIFRvIG1ha2UgdGhhdCBzYWZl IGFnYWluc3QgY29uY3VycmVudCBmbGFnIHNldHRlcnMsIGl0CnRha2VzIGEgY29uZGl0aW9uYWwg QWNjZXNzRXhjbHVzaXZlTG9jayBvbiB0aGUgZGF0YWJhc2Ugb2JqZWN0LgoKT24gYSBob3Qgc3Rh bmRieSwgdGhhdCBsb2NrIGFjcXVpc2l0aW9uIGZhaWxzIG91dHJpZ2h0IHdpdGgKCiAgRkFUQUw6 ICBjYW5ub3QgYWNxdWlyZSBsb2NrIG1vZGUgQWNjZXNzRXhjbHVzaXZlTG9jayBvbiBkYXRhYmFz ZQogICAgICAgICAgb2JqZWN0cyB3aGlsZSByZWNvdmVyeSBpcyBpbiBwcm9ncmVzcwoKYmVjYXVz ZSBMb2NrQWNxdWlyZUV4dGVuZGVkKCkgcmVmdXNlcyBsb2NrcyBzdHJvbmdlciB0aGFuClJvd0V4 Y2x1c2l2ZUxvY2sgb24gZGF0YWJhc2Ugb2JqZWN0cyBkdXJpbmcgcmVjb3ZlcnkuICBUaGUgc3Rh bmRieQphbHJlYWR5IHJlcGxheXMgdGhlIGZsYWcncyB2YWx1ZSBmcm9tIHRoZSBwcmltYXJ5LCBz byB0aGUgZGFuZ2xpbmcKZmxhZyBpcyB0aGUgcmVzdWx0IG9mIHJlcGxheWluZyBhIHN0YXRlIGlu IHdoaWNoIHRoZSBwcmltYXJ5IGhhZAphbHJlYWR5IGRyb3BwZWQgaXRzIGxvZ2luIGV2ZW50IHRy aWdnZXJzIGJ1dCBub3QgeWV0IHJ1biBhIGxvZ2luCmV2ZW50IHRyaWdnZXIgcGFzcyB0byBjbGVh ciB0aGUgZmxhZy4gIEFueSBzZXNzaW9uIGNvbm5lY3RpbmcgdG8gdGhlCnN0YW5kYnkgaW4gdGhh dCB3aW5kb3cgdGhlcmVmb3JlIGZhaWxzIHRvIGNvbm5lY3QuCgpTa2lwIHRoZSBjbGVhbnVwIG9u IGEgc3RhbmRieS4gIFRoZSBmbGFnIHdpbGwgYmUgY2xlYXJlZCB2aWEgV0FMCnJlcGxheSBvbmNl IHRoZSBwcmltYXJ5IGNsZWFycyBpdCBvbiBpdHMgc2lkZS4KCkFkZCBhIHJlY292ZXJ5IFRBUCB0 ZXN0IHRoYXQgcmVwcm9kdWNlcyB0aGUgb3JpZ2luYWwgcmVwb3J0OiBjcmVhdGUKYW5kIGRyb3Ag YSBsb2dpbiBldmVudCB0cmlnZ2VyIG9uIHRoZSBwcmltYXJ5IGluIG9uZSBzZXNzaW9uLCB3YWl0 CmZvciB0aGUgc3RhbmRieSB0byByZXBsYXksIHRoZW4gdmVyaWZ5IHRoYXQgYSBmcmVzaCBjb25u ZWN0aW9uIHRvCnRoZSBzdGFuZGJ5IHN1Y2NlZWRzLgoKQmFja3BhdGNoIHRvIHYxNywgd2hlcmUg dGhlIGxvZ2luIGV2ZW50IHRyaWdnZXJzIHdlcmUgaW50cm9kdWNlZC4KCkF1dGhvcjogQXl1c2gg VGl3YXJpIDxheXVzaHRpd2FyaS5zbGcwMUBnbWFpbC5jb20+ClJlcG9ydGVkLWJ5OiBFZ29yIENo aW5keWFza2luIDxreXpldmFuMjNAbWFpbC5ydT4KUmV2aWV3ZWQtYnk6IEZ1amlpIE1hc2FvIDxt YXNhby5mdWppaUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFl a29yb3Rrb3ZAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE5NDg4 LWQ3Y2NmY2EyYmY2Yjc0YjAlNDBwb3N0Z3Jlc3FsLm9yZwpCYWNrcGF0Y2gtdGhyb3VnaDogMTcK LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCAgMTAg Ky0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSAr CiAuLi4vdC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsICAgICAgfCAxMjUgKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTNfc3Rh bmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5jCmluZGV4IGRjZDJmNWEwOWJiLi5hZGM2ZWFiYzBmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYwpAQCAtOTM3LDggKzkzNywxNiBAQCBFdmVudFRyaWdnZXJPbkxvZ2luKHZv aWQpCiAJICogbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgU2V0RGF0YWJhc2VIYXNMb2dpbkV2 ZW50VHJpZ2dlcnMoKSwgYnV0IHdlCiAJICogZG9uJ3Qgd2FudCB0byBoYW5nIHRoZSBjb25uZWN0 aW9uIHdhaXRpbmcgb24gdGhlIGxvY2suICBUaHVzLCB3ZSBhcmUKIAkgKiBqdXN0IHRyeWluZyB0 byBhY3F1aXJlIHRoZSBsb2NrIGNvbmRpdGlvbmFsbHkuCisJICoKKwkgKiBTa2lwIHRoaXMgb24g YSBob3Qgc3RhbmRieTogdGhlIGNvbmRpdGlvbmFsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gdGhl CisJICogZGF0YWJhc2Ugb2JqZWN0IHdvdWxkIGZhaWwgd2l0aCAiY2Fubm90IGFjcXVpcmUgbG9j ayBtb2RlIC4uLiB3aGlsZQorCSAqIHJlY292ZXJ5IGlzIGluIHByb2dyZXNzIiwgd2hpY2ggdGhl IGNhbGxlciB3b3VsZCBzdXJmYWNlIGFzIGEgRkFUQUwKKwkgKiBjb25uZWN0aW9uIGVycm9yLiAg T24gYSBzdGFuZGJ5LCB3ZSBjYW5ub3QgKGFuZCBtdXN0IG5vdCkgY2xlYXIgdGhlCisJICogcGdf ZGF0YWJhc2UgZmxhZyBvdXJzZWx2ZXM7IGl0IHdpbGwgYmUgY2xlYXJlZCB2aWEgV0FMIHJlcGxh eSBvbmNlIHRoZQorCSAqIHByaW1hcnkncyBuZXh0IGxvZ2luIGV2ZW50IHRyaWdnZXIgcnVuIGNs ZWFycyBpdCBvbiB0aGUgcHJpbWFyeS4KIAkgKi8KLQllbHNlIGlmIChDb25kaXRpb25hbExvY2tT aGFyZWRPYmplY3QoRGF0YWJhc2VSZWxhdGlvbklkLCBNeURhdGFiYXNlSWQsCisJZWxzZSBpZiAo IVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmCisJCQkgQ29uZGl0aW9uYWxMb2NrU2hhcmVkT2JqZWN0 KERhdGFiYXNlUmVsYXRpb25JZCwgTXlEYXRhYmFzZUlkLAogCQkJCQkJCQkJCSAwLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKSkKIAl7CiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDM2ZDc4OTcy MGEzLi45ZWI4ZWQxMTQyNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVp bGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTYxLDYgKzYxLDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5nLnBsJywKICAgICAg ICd0LzA1MV9lZmZlY3RpdmVfd2FsX2xldmVsLnBsJywKICAgICAgICd0LzA1Ml9jaGVja3BvaW50 X3NlZ21lbnRfbWlzc2luZy5wbCcsCisgICAgICAndC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90 cmlnZ2VyLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MTkwMzM3OTA5MgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dlci5wbApAQCAt MCwwICsxLDEyNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisjCisjIFZlcmlmeSB0aGF0IGNvbm5lY3RpbmcgdG8gYSBzdGFuZGJ5 IHN0aWxsIHdvcmtzIGFmdGVyIGEgbG9naW4gZXZlbnQKKyMgdHJpZ2dlciBoYXMgYmVlbiBjcmVh dGVkIGFuZCBkcm9wcGVkIG9uIHRoZSBwcmltYXJ5LgorIworIyBDUkVBVEUgRVZFTlQgVFJJR0dF UiAuLi4gT04gbG9naW4gc2V0cyBwZ19kYXRhYmFzZS5kYXRoYXNsb2dpbmV2dCB0bworIyB0cnVl IG9uIHRoZSBwcmltYXJ5LCBidXQgRFJPUCBFVkVOVCBUUklHR0VSIGRvZXMgbm90IGNsZWFyIGl0 IC0tIHRoZQorIyBuZXh0IGxvZ2luIGV2ZW50IHRyaWdnZXIgcGFzcyBjbGVhcnMgdGhlIGZsYWcg bGF6aWx5IG9uIHRoZSBwcmltYXJ5LgorIyBUaGF0IGRhbmdsaW5nIGZsYWcgcmVwbGljYXRlcyB0 byB0aGUgc3RhbmRieS4gIEJlZm9yZSB0aGUKKyMgUmVjb3ZlcnlJblByb2dyZXNzKCkgZ3VhcmQg aW4gRXZlbnRUcmlnZ2VyT25Mb2dpbigpLCB0aGUgc3RhbmRieQorIyB0cmllZCB0byBjbGVhciB0 aGUgZmxhZyBpdHNlbGYsIHdoaWNoIHJlcXVpcmVzIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sKKyMgb24g dGhlIGRhdGFiYXNlIG9iamVjdDsgdGhhdCBsb2NrIG1vZGUgaXMgZm9yYmlkZGVuIGR1cmluZyBy ZWNvdmVyeSwKKyMgc28gdGhlIG5ldyBjb25uZWN0aW9uIGRpZWQgd2l0aCBGQVRBTC4KKyMKKyMg VG8ga2VlcCB0aGUgdGVzdCByb2J1c3QgdGhlIGV2ZW50IHRyaWdnZXIgaXMgc2V0IHVwIGluIGEg ZGVkaWNhdGVkCisjIGRhdGFiYXNlIChyZWdyZXNzX2xvZ2luX2V2dCkuICBBbGwgc3luY2hyb25p c2F0aW9uIGhlbHBlcnMgYmVsb3cgLS0KKyMgd2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoKSBhbmQg ZnJpZW5kcyAtLSBjb25uZWN0IHRvICJwb3N0Z3JlcyIgb24KKyMgdGhlIHByaW1hcnk7IGlmIHRo ZSB0cmlnZ2VyIHdlcmUgY3JlYXRlZCBpbiAicG9zdGdyZXMiIGl0c2VsZiwgdGhhdAorIyBwcm9i ZSBjb25uZWN0aW9uIHdvdWxkIGVudGVyIHRoZSBjbGVhbnVwIGJyYW5jaCBvbiB0aGUgcHJpbWFy eSBhbmQKKyMgc2lsZW50bHkgY2xlYXIgdGhlIGZsYWcgYmVmb3JlIHRoZSB0ZXN0IGV2ZW4gcnVu cywgbWFraW5nIHRoZQorIyBzY2VuYXJpbyB1bnJlcHJvZHVjaWJsZS4KKwordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMg U2V0IHVwIHByaW1hcnkgYW5kIGEgc3RyZWFtaW5nIHN0YW5kYnkuCitteSAkcHJpbWFyeSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKyRwcmltYXJ5LT5zdGFydDsKKworbXkgJGJhY2t1cF9u YW1lID0gJ2xvZ2luX2V2dF9iYWNrdXAnOworJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUp OworCitteSAkc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRi eScpOworJHN0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJHByaW1hcnksICRiYWNrdXBfbmFtZSwg aGFzX3N0cmVhbWluZyA9PiAxKTsKKyRzdGFuZGJ5LT5zdGFydDsKKworIyBBIGRlZGljYXRlZCBk YXRhYmFzZSBpc29sYXRlcyB0aGUgZGFuZ2xpbmcgZGF0aGFzbG9naW5ldnQgZmxhZyBmcm9tCisj IGFueSBoZWxwZXIgdGhhdCBjb25uZWN0cyB0byB0aGUgZGVmYXVsdCAicG9zdGdyZXMiIGRhdGFi YXNlLgorJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIERBVEFCQVNFIHJl Z3Jlc3NfbG9naW5fZXZ0Jyk7CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0 YW5kYnkpOworCisjIFNhbml0eSBjaGVjazogdGhlIHN0YW5kYnkgY2FuIGNvbm5lY3QgdG8gdGhl IG5ldyBkYXRhYmFzZSBiZWZvcmUKKyMgdGhlIHRyaWdnZXIgbWFjaGluZXJ5IGhhcyB0b3VjaGVk IGl0LgorJHN0YW5kYnktPnNhZmVfcHNxbCgncmVncmVzc19sb2dpbl9ldnQnLCAnU0VMRUNUIDEn KTsKKworIyBDcmVhdGUgYW5kIGRyb3AgYSBsb2dpbiBldmVudCB0cmlnZ2VyIGluc2lkZSB0aGUg ZGVkaWNhdGVkIGRhdGFiYXNlCisjIGluIGEgc2luZ2xlIHNlc3Npb24uICBDUkVBVEUgRVZFTlQg VFJJR0dFUiBzZXRzCisjIHBnX2RhdGFiYXNlLmRhdGhhc2xvZ2luZXZ0ID0gdHJ1ZSBmb3IgcmVn cmVzc19sb2dpbl9ldnQ7IG1hcmsgaXQKKyMgRU5BQkxFIEFMV0FZUyBzbyB0aGUgc2NlbmFyaW8g bWF0Y2hlcyB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydC4KKyMgQWZ0ZXIgRFJPUCB0aGUgZmxhZyBy ZW1haW5zIHNldCBvbiBkaXNrIHVudGlsIGEgc3Vic2VxdWVudCBsb2dpbiBvbgorIyB0aGUgcHJp bWFyeSBjbGVhcnMgaXQ7IHNpbmNlIGxhdGVyIGhlbHBlcnMgb25seSB0b3VjaCB0aGUKKyMgInBv c3RncmVzIiBkYXRhYmFzZSwgcmVncmVzc19sb2dpbl9ldnQncyBmbGFnIHN0YXlzIHNldCBhbmQK KyMgcmVwbGljYXRlcyB0aGF0IHdheSB0byB0aGUgc3RhbmRieS4KKyRwcmltYXJ5LT5zYWZlX3Bz cWwoCisJJ3JlZ3Jlc3NfbG9naW5fZXZ0JywgcXsKK0NSRUFURSBGVU5DVElPTiBpbml0X3Nlc3Np b24oKSBSRVRVUk5TIGV2ZW50X3RyaWdnZXIKK0xBTkdVQUdFIHBscGdzcWwgQVMgJCQgQkVHSU4g UkFJU0UgTk9USUNFICdpbml0X3Nlc3Npb24nOyBFTkQgJCQ7CitDUkVBVEUgRVZFTlQgVFJJR0dF UiBpbml0X3Nlc3Npb24gT04gbG9naW4KKyAgICBFWEVDVVRFIEZVTkNUSU9OIGluaXRfc2Vzc2lv bigpOworQUxURVIgRVZFTlQgVFJJR0dFUiBpbml0X3Nlc3Npb24gRU5BQkxFIEFMV0FZUzsKK0RS T1AgRVZFTlQgVFJJR0dFUiBpbml0X3Nlc3Npb247CitEUk9QIEZVTkNUSU9OIGluaXRfc2Vzc2lv bigpOworfSk7CisKKyMgV2FpdCBmb3IgdGhlIHN0YW5kYnkgdG8gcmVwbGF5IHRoZSBDUkVBVEUv RFJPUCBjYXRhbG9nIHN0YXRlLiAgVGhpcworIyBwcm9iZXMgInBvc3RncmVzIiwgbm90IHJlZ3Jl c3NfbG9naW5fZXZ0LCBzbyBpdCBkb2VzIG5vdCBkaXN0dXJiCisjIHRoZSBkYW5nbGluZyBmbGFn LgorJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5KTsKKworIyBUaGUg ZmxhZyByZW1haW5zIHNldCBpbiByZWdyZXNzX2xvZ2luX2V2dCBvbiBib3RoIHNpZGVzLgoraXMo ICRwcmltYXJ5LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgZGF0aGFzbG9n aW5ldnQgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3JlZ3Jlc3NfbG9naW5fZXZ0 JyIKKwkpLAorCSd0JywKKwknZGF0aGFzbG9naW5ldnQgcmVtYWlucyBzZXQgb24gcHJpbWFyeSBh ZnRlciBEUk9QIEVWRU5UIFRSSUdHRVInKTsKK2lzKCAkc3RhbmRieS0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGRhdGhhc2xvZ2luZXZ0IEZST00gcGdfZGF0YWJhc2UgV0hF UkUgZGF0bmFtZSA9ICdyZWdyZXNzX2xvZ2luX2V2dCciCisJKSwKKwkndCcsCisJJ2RhdGhhc2xv Z2luZXZ0IHJlcGxpY2F0ZWQgdG8gc3RhbmRieScpOworCisjIEEgbmV3IGNvbm5lY3Rpb24gdG8g cmVncmVzc19sb2dpbl9ldnQgb24gdGhlIHN0YW5kYnkgZXhlcmNpc2VzCisjIEV2ZW50VHJpZ2dl ck9uTG9naW4oKSdzIGNsZWFudXAgYnJhbmNoLiAgV2l0aCB0aGUKKyMgUmVjb3ZlcnlJblByb2dy ZXNzKCkgZ3VhcmQgaXQgc3VjY2VlZHM7IHdpdGhvdXQgaXQgdGhlIHNlc3Npb24KKyMgYWJvcnRz IHdpdGggYSBGQVRBTCBhYm91dCBBY2Nlc3NFeGNsdXNpdmVMb2NrLgorbXkgKCRyZXQsICRzdGRv dXQsICRzdGRlcnIpID0gJHN0YW5kYnktPnBzcWwoJ3JlZ3Jlc3NfbG9naW5fZXZ0JywgJ1NFTEVD VCAxJyk7CitpcygkcmV0LCAwLAorCSdzdGFuZGJ5IGFjY2VwdHMgY29ubmVjdGlvbiB0byBkYXRh YmFzZSB3aXRoIGRhbmdsaW5nIGRhdGhhc2xvZ2luZXZ0Jyk7Cit1bmxpa2UoCisJJHN0ZGVyciwK Kwlxci9jYW5ub3QgYWNxdWlyZSBsb2NrIG1vZGUgQWNjZXNzRXhjbHVzaXZlTG9jay8sCisJJ25v IEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgRkFUQUwgb24gc3RhbmRieSBsb2dpbicpOworCisjIEZpbmFs bHkgZXhlcmNpc2UgdGhlIHByaW1hcnktc2lkZSBjbGVhbnVwIHRoYXQgdGhlIHN0YW5kYnkgaXMg bWVhbnQKKyMgdG8gZGVmZXIgdG8uICBPcGVuaW5nIGEgZnJlc2ggc2Vzc2lvbiBhZ2FpbnN0IHJl Z3Jlc3NfbG9naW5fZXZ0IG9uCisjIHRoZSBwcmltYXJ5IGVudGVycyBFdmVudFRyaWdnZXJPbkxv Z2luKCkncyBjbGVhbnVwIGJyYW5jaCB3aXRoIHRoZQorIyB0cmlnZ2VyIGxpc3QgZW1wdHk7IEFj Y2Vzc0V4Y2x1c2l2ZUxvY2sgaXMgYWxsb3dlZCBvdXRzaWRlIHJlY292ZXJ5LAorIyBzbyB0aGUg ZmxhZyBpcyBjbGVhcmVkIGluIHBsYWNlLiAgVGhlIGluLXBsYWNlIHVwZGF0ZSBlbWl0cyBhCisj IFhMT0dfSEVBUF9JTlBMQUNFIHJlY29yZCBidXQgZG9lcyBub3QgYXNzaWduIGFuIHhpZCBvciB3 cml0ZSBhCisjIGNvbW1pdCByZWNvcmQsIHNvIHRoZSBXQUwgaXMgbm90IGF1dG8tZmx1c2hlZCAt LSBmb3JjZSBhIGZsdXNoIHZpYQorIyBwZ19zd2l0Y2hfd2FsKCkgc28gdGhlIHJlY29yZCByZWFj aGVzIHRoZSBzdGFuZGJ5LgorJHByaW1hcnktPnNhZmVfcHNxbCgncmVncmVzc19sb2dpbl9ldnQn LCAnU0VMRUNUIDEnKTsKK2lzKCAkcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLAor CQkiU0VMRUNUIGRhdGhhc2xvZ2luZXZ0IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9 ICdyZWdyZXNzX2xvZ2luX2V2dCciCisJKSwKKwknZicsCisJJ3ByaW1hcnkgY2xlYXJzIGRhdGhh c2xvZ2luZXZ0IG9uIG5leHQgbG9naW4gYWZ0ZXIgRFJPUCcpOworCiskcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgcGdfc3dpdGNoX3dhbCgpJyk7CiskcHJpbWFyeS0+d2Fp dF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkpOworaXMoICRzdGFuZGJ5LT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgZGF0aGFzbG9naW5ldnQgRlJPTSBwZ19kYXRhYmFz ZSBXSEVSRSBkYXRuYW1lID0gJ3JlZ3Jlc3NfbG9naW5fZXZ0JyIKKwkpLAorCSdmJywKKwknY2xl YXJlZCBkYXRoYXNsb2dpbmV2dCByZXBsaWNhdGVzIHRvIHN0YW5kYnknKTsKKworZG9uZV90ZXN0 aW5nKCk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000946c05065252422e--