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 1uRvwf-000xig-6B for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Jun 2025 16:47:29 +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 1uRvwd-002pjR-AI for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Jun 2025 16:47:27 +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 1uRvwc-002piv-Or for pgsql-hackers@lists.postgresql.org; Wed, 18 Jun 2025 16:47:27 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uRvwb-002izf-1l for pgsql-hackers@postgresql.org; Wed, 18 Jun 2025 16:47:26 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-ade5b8aab41so1513593766b.0 for ; Wed, 18 Jun 2025 09:47:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750265243; x=1750870043; darn=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=EhniB9W71h9rqPsZzjuamKFVS45iOmqmFxQNLHtbLdU=; b=kJb5AqUPakE1BPvlRueAoo7dPzIDbcajmljTm6mRHuR3kjTo9LNrQh1/VC2OZliMs9 fcO2A8zUGzQff9LPx2qZcQUvfs0WZkaAQ6BQFdyf1rhOq87/9DGkyGOjvLMdxVHauthZ zTFIyDEYL/QEam5ISbsJtqD4w38ODblEO649Bd44H7hOFihLfmnhDeGLGwq0O9gvmPyS Ub5GtaX3ukEeO5X1US/X8QYOTsl2IjNXvs+HKamtOjvMIOF/m8ykfcNZOFzdC6uhew7+ 7DM9eVid0DqICyPIDcjVKGfxcXYNQLmabkNtF6pUznO7Fo3qRTO9kXKgzjRy30QNJ1Z+ wzWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750265243; x=1750870043; 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=EhniB9W71h9rqPsZzjuamKFVS45iOmqmFxQNLHtbLdU=; b=jL8fC0n1abVO0xoS0XOSg+gW5jKAsqc3ODtyxc6nxgF14LwHpWKFIkGYf06Hl8ibD7 dkQVZBZd/TRHHo0WohvH0zSM1ZjD6nBZiRPJTc8WM1UX+0l3FMNGzVDX/hiliWJElyqd j/rKzrwlfObEK3aZtXohfbTJUWvsKfiCZSQ/BrFZdEK34E08YIXP4dWQk5Tfs41ZcoEj 201TeqMs5dVN7tkAlfS4FEFDh6eqyQXsTxBP4ImDoqJtZCtCIel/hw5nIq65PB4T+Vqs 8Dw2UQ0eIH3QM81mwjCw0+2wUuM+EyIHTkPhDICfliim58gaXFjMyBAMv+CJA4h6R9lx 26yg== X-Forwarded-Encrypted: i=1; AJvYcCU1B6553OlWtoSV4pXXtIKn0lbg9R39cwTlGF+6wXLH2K2iOEUnuvEKj0/spvncTshaH9fhji704riZDZA0@postgresql.org X-Gm-Message-State: AOJu0YyTi2aLT3SC+czKGSVJASp25Zah4V6JQLIsBQ0EVIvfidJsDsxt uM4YVccCKXubptd68qb06SMBMJ8rQn8oCXj+v7QLkpiC0dM57ZV7+F0ah0IpEU3B9IkftwoRJdP InjH3H3Qy8z5p+0DucYxLLUW2r+rjJY0= X-Gm-Gg: ASbGnctECLaTfFTTxHXS7ZFaK4wnWE5NRjIb2D6w/gZZZp376jC/wfjpUVzxX7CI10t wYJNyC6R/M+TVndGB+VBffbEORqrlBokWerXTpHJ+BG1JQtandBRXpRNHNRFDAtS6wjtBpvyArF PE9FMFfGOtZU+iE2A8/7T2ATLLLNdTMszXIHqpKZtH4fqTWguAW+LEoiVXIT0Gm2gLkqDaixrjI hBvPw== X-Google-Smtp-Source: AGHT+IFQpLlH8pqxTOLUbGlkwi2koruMTBK0rN1AgbprjnBLtfmraOOHu04zy6g+r7bM2x4JYNBxJGbXkwHhKgV+lWY= X-Received: by 2002:a17:907:97ce:b0:ade:9b52:4cc2 with SMTP id a640c23a62f3a-adfad4b7e61mr1647084766b.59.1750265242732; Wed, 18 Jun 2025 09:47:22 -0700 (PDT) MIME-Version: 1.0 References: <1d12d2-67235980-35-19a406a0@63439497> <1d97ec-6841b600-3-b7b4780@40747246> <28c8bf-68470780-3-51b29480@89454035> <0a617d34-abc3-4090-92a5-ea15d45e36f6@gmail.com> <228607.1750003556@sss.pgh.pa.us> <3f242e-68518380-11-78125f00@134027639> <214ba-6852df80-9-7e0df800@134698799> <21b44-6852e000-3-a556820@87831171> In-Reply-To: <21b44-6852e000-3-a556820@87831171> From: Alexander Korotkov Date: Wed, 18 Jun 2025 19:47:09 +0300 X-Gm-Features: Ac12FXxUX1i9kJ-psSlg4mALrM3-ZZojEjzYAPXEvWcQD7lMoEtjEAERPu0ez5U Message-ID: Subject: Re: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly To: Vitaly Davydov Cc: vignesh C , "Hayato Kuroda (Fujitsu)" , Tom Lane , Alexander Lakhin , Amit Kapila , pgsql-hackers , Masahiko Sawada , "tomas@vondra.me" Content-Type: multipart/mixed; boundary="0000000000000e8e370637db625c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000e8e370637db625c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 18, 2025 at 6:50=E2=80=AFPM Vitaly Davydov wrote: > > I think, it is a good idea. Once we do not use the generated data, it i= s ok > > just to generate WAL segments using the proposed function. I've tested = this > > function. The tests worked as expected with and without the fix. The at= tached > > patch does the change. > > Sorry, forgot to attach the patch. It is created on the current master br= anch. > It may conflict with your corrections. I hope, it could be useful. Thank you. I've integrated this into a patch to improve these tests. Regarding assertion failure, I've found that assert in PhysicalConfirmReceivedLocation() conflicts with restart_lsn previously set by ReplicationSlotReserveWal(). As I can see, ReplicationSlotReserveWal() just picks fresh XLogCtl->RedoRecPtr lsn. So, it doesn't seems there is a guarantee that restart_lsn never goes backward. The commit in ReplicationSlotReserveWal() even states there is a "chance that we have to retry". Thus, I propose to remove the assertion introduced by ca307d5cec90. Any objection from backpatching 0001 though 17 and pushing 0002 to the head= ? ------ Regards, Alexander Korotkov Supabase --0000000000000e8e370637db625c Content-Type: application/octet-stream; name="v4-0002-Remove-excess-assert-from-InvalidatePossiblyObsol.patch" Content-Disposition: attachment; filename="v4-0002-Remove-excess-assert-from-InvalidatePossiblyObsol.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc26j8bf1 RnJvbSBhODA1YjVmYzYzMjAwNjliMzNjM2Y2MDAzN2YzMmYzZTY3OWRiNWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogV2VkLCAxOCBKdW4gMjAyNSAxOTozNDowMCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMi8yXSBSZW1vdmUgZXhjZXNzIGFzc2VydCBmcm9tCiBJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZVNsb3QoKQoKY2EzMDdkNWNlYzkwIGludHJvZHVjZWQga2VlcGluZyBXQUwgc2Vn bWVudHMgYnkgc2xvdCdzIGxhc3Qgc2F2ZWQgcmVzdGFydApMU04uIEl0IGFsc28gYWRkZWQgYW4g YXNzZXJ0aW9uIHRoYXQgdGhlIHNsb3QncyByZXN0YXJ0IExTTiBuZXZlciBnb2VzCmJhY2t3YXJk LiBBcyBzdGF0ZWQgaW4gdGhlIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwoKSBjb21tZW50LCB0 aGlzIGlzIG5vdAphbHdheXMgdHJ1ZS4gQWRkaXRpb25hbGx5LCB0aGlzIGlzc3VlIGhhcyBiZWVu IHNwb3R0ZWQgYnkgc29tZSBidWlsZGZhcm0KbWVtYmVycy4KClZpdGFseSBEYXZ5ZG92IDx2LmRh dnlkb3ZAcG9zdGdyZXNwcm8ucnU+IHByb3Bvc2VkIHRoZSBmaXggaWRlYS4KClJlcG9ydGVkLWJ5 OiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+ClJlcG9ydGVkLWJ5OiBUb20gTGFuZSA8 dGdsQHNzcy5wZ2gucGEudXM+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMRGFO bTNzLWpwUVRlMU1zaHN2UThHTyUzRFRMajIzM0pDZGtRN3VaNnB3cVJWcHhBZHclNDBtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyB8IDIgLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBjNjRm MDIwNzQyZi4uYzExZTU4OGQ2MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTE4MTAsOCAr MTgxMCw2IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVf Y2F1c2VzLAogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKLQkJQXNzZXJ0 KHMtPmRhdGEucmVzdGFydF9sc24gPj0gcy0+bGFzdF9zYXZlZF9yZXN0YXJ0X2xzbik7Ci0KIAkJ cmVzdGFydF9sc24gPSBzLT5kYXRhLnJlc3RhcnRfbHNuOwogCiAJCS8qIHdlIGRvIG5vdGhpbmcg aWYgdGhlIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --0000000000000e8e370637db625c Content-Type: application/octet-stream; name="v4-0001-Improve-runtime-and-output-of-tests-for-replicati.patch" Content-Disposition: attachment; filename="v4-0001-Improve-runtime-and-output-of-tests-for-replicati.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc26j8bb0 RnJvbSAwYjI4OTk0ZDU3ODBiYjZjYTRiMzgxZGU5ZGQ4Yjk2ZWE1ZGRhM2MwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogV2VkLCAxOCBKdW4gMjAyNSAxOTozMjowNSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMS8yXSBJbXByb3ZlIHJ1bnRpbWUgYW5kIG91dHB1dCBvZiB0ZXN0cyBmb3IgcmVw bGljYXRpb24KIHNsb3RzIGNoZWNrcG9pbnRpbmcuCgpUaGUgVEFQIHRlc3RzIHRoYXQgdmVyaWZ5 IGxvZ2ljYWwgYW5kIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgYmVoYXZpb3IKZHVyaW5nIGNo ZWNrcG9pbnRzICgwNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwgYW5kCjA0N19jaGVja3Bv aW50X3BoeXNpY2FsX3Nsb3QucGwpIGluc2VydGVkIHR3byBiYXRjaGVzIG9mIDIgbWlsbGlvbiBy b3dzIGVhY2gsCmdlbmVyYXRpbmcgYXBwcm94aW1hdGVseSA1MjAgTUIgb2YgV0FMLiAgT24gc2xv dyBtYWNoaW5lcywgb3Igd2hlbiBjb21waWxlZAp3aXRoICctRFJFTENBQ0hFX0ZPUkNFX1JFTEVB U0UgLURDQVRDQUNIRV9GT1JDRV9SRUxFQVNFJywgdGhpcyBjYXVzZWQgdGhlCnRlc3RzIHRvIHJ1 biBmb3IgOC05IG1pbnV0ZXMgYW5kIG9jY2FzaW9uYWxseSB0aW1lIG91dCwgYXMgc2VlbiBvbiB0 aGUKYnVpbGRmYXJtIGFuaW1hbCBwcmlvbi4KClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSBtZW50 aW9uZWQgdGVzdHMgdG8gdXRpbGl6ZSB0aGUgJG5vZGUtPmFkdmFuY2Vfd2FsKCkKZnVuY3Rpb24s IHRoZXJlYnkgcmVkdWNpbmcgcnVudGltZS4gT25jZSB3ZSBkbyBub3QgdXNlIHRoZSBnZW5lcmF0 ZWQgZGF0YSwKdGhlIHByb3Bvc2VkIGZ1bmN0aW9uIGlzIGEgZ29vZCBhbHRlcm5hdGl2ZSwgd2hp Y2ggY3V0cyB0aGUgdG90YWwgd2FsbC1jbG9jawpydW4gdGltZS4KCldoaWxlIGhlcmUsIHJlbW92 ZSBzdXBlcmZsdW91cyAnXG4nIGNoYXJhY3RlcnMgZnJvbSBzZXZlcmFsIG5vdGUoKSBjYWxsczsK dGhlc2UgYXBwZWFyZWQgbGl0ZXJhbGx5IGluIHRoZSBidWlsZC1mYXJtIGxvZ3MgYW5kIGxvb2tl ZCBvZGQuICBBbHNvLCByZW1vdmUKZXhjZXNzaXZlICdzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMn IEdVQyBmcm9tIHRoZSBjb25maWcgYW5kIGFkZCBhIGNoZWNrIGZvcgonaW5qZWN0aW9uX3BvaW50 cycgZXh0ZW5zaW9uIGF2YWlsYWJpbGl0eS4KClJlcG9ydGVkLWJ5OiBBbGV4YW5kZXIgTGFraGlu IDxleGNsdXNpb25AZ21haWwuY29tPgpSZXBvcnRlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdo LnBhLnVzPgpBdXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ CkF1dGhvcjogVml0YWx5IERhdnlkb3YgPHYuZGF2eWRvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3 ZWQtYnk6IEhheWF0byBLdXJvZGEgPGt1cm9kYS5oYXlhdG9AZnVqaXRzdS5jb20+CkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmJjNWQ5NGUtNmZiZC00YTY0LTg1ZDQtYzllMjg0YTU4 ZWIyJTQwZ21haWwuY29tCkJhY2twYXRjaC10aHJvdWdoOiAxNwotLS0KIC4uLi9yZWNvdmVyeS90 LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbCB8IDMxICsrKysrKysrKy0tLS0tLS0tLS0K IC4uLi90LzA0N19jaGVja3BvaW50X3BoeXNpY2FsX3Nsb3QucGwgICAgICAgICB8IDIzICsrKysr KystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9n aWNhbF9zbG90LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2Fs X3Nsb3QucGwKaW5kZXggYjQyNjVjNGE2YTUuLmQ2N2M1MTA4ZDc4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbAorKysgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbApAQCAtMjEsMTUg KzIxLDE4IEBAIG15ICgkbm9kZSwgJHJlc3VsdCk7CiAKICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdtaWtlJyk7CiAkbm9kZS0+aW5pdDsKLSRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKLQkic2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ2luamVj dGlvbl9wb2ludHMnIik7CiAkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJ3 YWxfbGV2ZWwgPSAnbG9naWNhbCciKTsKICRub2RlLT5zdGFydDsKLSRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHMpKTsKIAotIyBD cmVhdGUgYSBzaW1wbGUgdGFibGUgdG8gZ2VuZXJhdGUgZGF0YSBpbnRvLgotJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCXF7Y3JlYXRlIHRhYmxlIHQgKGlkIHNlcmlhbCBwcmltYXJ5IGtl eSwgYiB0ZXh0KX0pOworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMg aXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBp cyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJl IGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmpl Y3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlv bl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcShDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHMpKTsKIAogIyBDcmVhdGUgdGhl IHR3byBzbG90cyB3ZSdsbCBuZWVkLgogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAt NTgsMjMgKzYxLDE3IEBAIFNFTEVDVCAxIFx3YXRjaCAwLjEKIFxxCiApKTsKIAotIyBJbnNlcnQg Mk0gcm93czsgdGhhdCdzIGFib3V0IDI2ME1CICh+MjAgc2VnbWVudHMpIHdvcnRoIG9mIFdBTC4K LSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQlxe2luc2VydCBpbnRvIHQgKGIpIHNlbGVj dCBtZDUoaTo6dGV4dCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDAwKSBzKGkpfQotKTsK KyRub2RlLT5hZHZhbmNlX3dhbCgyMCk7CiAKICMgUnVuIGFub3RoZXIgY2hlY2twb2ludCB0byBz ZXQgYSBuZXcgcmVzdG9yZSBMU04uCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hl Y2twb2ludH0pOwogCi0jIEFub3RoZXIgMk0gcm93czsgdGhhdCdzIGFib3V0IDI2ME1CICh+MjAg c2VnbWVudHMpIHdvcnRoIG9mIFdBTC4KLSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQlx e2luc2VydCBpbnRvIHQgKGIpIHNlbGVjdCBtZDUoaTo6dGV4dCkgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMDAwMDAwKSBzKGkpfQotKTsKKyRub2RlLT5hZHZhbmNlX3dhbCgyMCk7CiAKICMgUnVu IGFub3RoZXIgY2hlY2twb2ludCwgdGhpcyB0aW1lIGluIHRoZSBiYWNrZ3JvdW5kLCBhbmQgbWFr ZSBpdCB3YWl0CiAjIG9uIHRoZSBpbmplY3Rpb24gcG9pbnQpIHNvIHRoYXQgdGhlIGNoZWNrcG9p bnQgc3RvcHMgcmlnaHQgYmVmb3JlCiAjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCi1ub3Rl KCdzdGFydGluZyBjaGVja3BvaW50XG4nKTsKK25vdGUoJ3N0YXJ0aW5nIGNoZWNrcG9pbnQnKTsK IAogbXkgJGNoZWNrcG9pbnQgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwog JGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCkBAIC04OCw3ICs4NSw3IEBAIGNoZWNrcG9pbnQ7CiAp KTsKIAogIyBXYWl0IHVudGlsIHRoZSBjaGVja3BvaW50IHN0b3BzIHJpZ2h0IGJlZm9yZSByZW1v dmluZyBXQUwgc2VnbWVudHMuCi1ub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnRcbicp Oworbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CiAkbm9kZS0+d2FpdF9mb3Jf ZXZlbnQoJ2NoZWNrcG9pbnRlcicsICdjaGVja3BvaW50LWJlZm9yZS1vbGQtd2FsLXJlbW92YWwn KTsKIG5vdGUoJ2luamVjdGlvbl9wb2ludCBpcyByZWFjaGVkJyk7CiAKQEAgLTEwNyw3ICsxMDQs NyBAQCBzZWxlY3QgY291bnQoKikgZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Ns b3RfbG9naWNhbCcsIG51bGwsIG51bGwpIFx3YQogKSk7CiAKICMgV2FpdCB1bnRpbCB0aGUgc2xv dCdzIHJlc3RhcnRfbHNuIHBvaW50cyB0byB0aGUgbmV4dCBXQUwgc2VnbWVudC4KLW5vdGUoJ3dh aXRpbmcgZm9yIGluamVjdGlvbl9wb2ludFxuJyk7Citub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rp b25fcG9pbnQnKTsKICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLAogCSds b2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50Jyk7CiBub3RlKCdpbmplY3Rp b25fcG9pbnQgaXMgcmVhY2hlZCcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdf Y2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCmluZGV4IDQ1NGU1NmI5YmQyLi5hMTMzMmI1ZDQ0 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNh bF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNrcG9pbnRfcGh5c2lj YWxfc2xvdC5wbApAQCAtMjEsMTUgKzIxLDE4IEBAIG15ICgkbm9kZSwgJHJlc3VsdCk7CiAKICRu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtaWtlJyk7CiAkbm9kZS0+aW5p dDsKLSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkic2hhcmVkX3ByZWxv YWRfbGlicmFyaWVzID0gJ2luamVjdGlvbl9wb2ludHMnIik7CiAkbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJ3YWxfbGV2ZWwgPSAncmVwbGljYSciKTsKICRub2RlLT5zdGFy dDsKLSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGluamVj dGlvbl9wb2ludHMpKTsKIAotIyBDcmVhdGUgYSBzaW1wbGUgdGFibGUgdG8gZ2VuZXJhdGUgZGF0 YSBpbnRvLgotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCXF7Y3JlYXRlIHRhYmxlIHQg KGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgYiB0ZXh0KX0pOworIyBDaGVjayBpZiB0aGUgZXh0ZW5z aW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2li bGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBt b2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZS0+ Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9 PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHMpKTsKIAogIyBDcmVhdGUgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90LgogJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtNDQsOSArNDcsNyBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2ludH0pOwog CiAjIEluc2VydCAyTSByb3dzOyB0aGF0J3MgYWJvdXQgMjYwTUIgKH4yMCBzZWdtZW50cykgd29y dGggb2YgV0FMLgotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCXF7aW5zZXJ0IGludG8g dCAoYikgc2VsZWN0IG1kNShpOjp0ZXh0KSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkg cyhpKX0KLSk7Ciskbm9kZS0+YWR2YW5jZV93YWwoMjApOwogCiAjIEFkdmFuY2Ugc2xvdCB0byB0 aGUgY3VycmVudCBwb3NpdGlvbiwganVzdCB0byBoYXZlIGV2ZXJ5dGhpbmcgInZhbGlkIi4KICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTU3LDkgKzU4LDcgQEAgJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe2NoZWNrcG9p bnR9KTsKIAogIyBBbm90aGVyIDJNIHJvd3M7IHRoYXQncyBhYm91dCAyNjBNQiAofjIwIHNlZ21l bnRzKSB3b3J0aCBvZiBXQUwuCi0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JcXtpbnNl cnQgaW50byB0IChiKSBzZWxlY3QgbWQ1KGk6OnRleHQpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwMDAwMCkgcyhpKX0KLSk7Ciskbm9kZS0+YWR2YW5jZV93YWwoMjApOwogCiBteSAkcmVzdGFy dF9sc25faW5pdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe3NlbGVjdCByZXN0 YXJ0X2xzbiBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIHdoZXJlIHNsb3RfbmFtZSA9ICdzbG90 X3BoeXNpY2FsJ30KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000000e8e370637db625c--