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 1w7tUI-005oGC-0o for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 11:11:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7tUG-00GrZv-0h for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 11:11:52 +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 1w7tUF-00GrZm-2i for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 11:11:52 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7tUD-00000002LFf-1gFy for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 11:11:51 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-59de8155501so7057641e87.3 for ; Wed, 01 Apr 2026 04:11:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775041909; cv=none; d=google.com; s=arc-20240605; b=WPW2heQcmonxn5mvBFgMob3AB9mMSoM0tzPTAVs5e2A5PP4YCkb7U8jOsBKBrnL2mO nuHkk13GaQ9cwrCeXkL1YJAg0t/5AUBvIixnr2uZcVgTKKFnJCeUNnprfmg1suOqATwC xT65HXHASkMdIFb6NIxiWyMQ9mrvmvmQ88xaDylo10g+UPnPN0s9dDrR8bwfeJ975gP6 K/agqUG3TRbeS195gEYX4qZq0tEDjgjq8vVlvPGa8+1w44WYdRZKE9eUI7+lJdQXCpey SAam0LkU4BuunUAsY2mVtzI1yyiEi2ajdDEypIWkWJhZ1r52m5LWwWTVYsigHRnWQTOM Wvsg== 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=wJYjanNLvdTTMt+4td9kLubomWeYq4gDsX3q054/W4o=; fh=RazGlfu7GjWTGOCDfW36K7RCUnbkVDB3IRaCqHRCd98=; b=OMly5bNV70kZKPE6FQFjXC9lSyy1S36JgXZ03Na2v9vQrEgOhtjvtHcRFoUeSX92QR 8A6hZKF5kL1h5braWQmjpVqRQxbWyslZJNpBbeAkv2IRzMDv3F7Qv03SkfPWcjVCYIbL R3qfR3UZzfiROMbL9OHPozt5VM/AYry1yANtiC+BYcvnvJqLuGEVbOyfhxHsNiwYz47R fL11uTpfEjwPTM6Or41K2pSSFq+LF95dEL1gQuTT7/QvQvkEq4gMtn+QA/anvcBxbFWo j9bS1Ry3Vdh5e0JpPZ+3DuZ4Rlk6c/52CRYP0MTgOuZbs5m3MsFUI9lcjQfhKoCUOvZS oW4w==; 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=1775041909; x=1775646709; 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=wJYjanNLvdTTMt+4td9kLubomWeYq4gDsX3q054/W4o=; b=n/Kg0dhD5CbtdSaYeQ3sBGGFmjOVsDfxa4yNbZzAdisj4zQi3t6NsAL7ahSSKnP/2C HQa126bv8KC18r58xunzQRg48sJmhXT/OcA/wRuduyBp7rQQmiJ4NCtamoHz78eCE5Cf xekmpDjqUf8zgo4dZdrN+Eq8XQC4Lx2NQ9JzYbwrElmWOJJBXuw8KrNu2X0HDf5U66RZ LinlqYVMDSZA0CC1aVH7RhxxPBqdgL/ZtqXwOqgQNkv8+c3RgTo33c/0Aszsq+yjPNzp SHbMTQGdtw0kfo8IxwuNF7MDc7pajKO/sOtKgKZcQ10Q8ADW0fVyAvnuV/6I0nXg7gk6 yC9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775041909; x=1775646709; 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=wJYjanNLvdTTMt+4td9kLubomWeYq4gDsX3q054/W4o=; b=LHH2dNBhfb0doY0TBQAVcMXXEx/QQ8MXYw8y9gHiHudzXYZs9xZH/4ZDE9nhEcE9/j kmSSq4WBw99nIzZ+xwdUYEmL/wUiKjRorPXE85fKpvnME/xef2GiP/Pi4sgnhR9h/8HF 6gIUQ2AKGHiZQij662NbiskPLPHsdt7OVgTQEGn38/tF7P2AzsEvSMVzwxhHKh3U1JmE pJk/ZQrkMjj+GlfeA051KYTHjfQFVRw7n/HhfoxDumroZqO9+ZnsL2+GTD9Y/32m/Tpq KltfBoBUnMPK/v7Q1zx/A7wOpxNZKGVxhqkYsCc7FwkLeFjmFvqdNjQgXqq1NFZ7WmvO mepg== X-Forwarded-Encrypted: i=1; AJvYcCX95Rsb9a9BabuCW+dCgErSnPWVr2akLbyhbQn8P9oJ2PhPb+e9cpO2OWpaoTUAfy+hXGuzD+8qr+5D5oDI@lists.postgresql.org X-Gm-Message-State: AOJu0YwyHEkbPjubKwdI2LJNM2fHlYRLXE57coDu3ssxI9xwCeG66Lix DRGnmVaxRbwCbqRlAR8O+DnRPB1zpcczVKYzI6eX5YMwWEbIqHCcov5SBrabT8VY+ZDDpJ5HUho 6SVTMTHop2f4pvadtVRY9UkN0bEm6sg== X-Gm-Gg: ATEYQzylySaaFrRFXE/kr+Ba27facZkjT4LzR4TwdwKm9O9P0SjQWcLh9qHO6Pif63P THFvTp0QDQJN2y7SzHDeuzEivT4cUdskaa4ADbHGvBIKe5j8W3HW0T7XlvBXR5MR1pNtpAya7zA TzDiQVoOCgMt6jyD5mhqxroI2Fyq8idbw8XYgGLEBHKogQuAQwVRQJoYsMTimieYG4TOOCK+EL3 i7wupevsgoTWxlVBsYWTIt7lmFydWqpSTa09r6AHRYi8eGS9jBU6CWMq4CfTVFFZcYeuMdrIkH3 AijkwypfSdjOo1P+3OoFw4Ly X-Received: by 2002:a05:6512:3b27:b0:5a1:3400:f937 with SMTP id 2adb3069b0e04-5a2c1ee829dmr158769e87.7.1775041908508; Wed, 01 Apr 2026 04:11:48 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Wed, 1 Apr 2026 16:41:35 +0530 X-Gm-Features: AQROBzBqJCaHjBS9LmCMePYM0fXA7G6jhMQxWkJ3K_mtBA0Gnx56XWA9ShbtgJA Message-ID: Subject: Re: Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion? To: Fujii Masao Cc: "Zhijie Hou (Fujitsu)" , shveta malik , Amit Kapila , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000006b2898064e64262a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006b2898064e64262a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 1, 2026 at 3:19=E2=80=AFPM Fujii Masao = wrote: > > On Wed, Apr 1, 2026 at 2:34=E2=80=AFPM Nisha Moond wrote: > > > > On Tue, Mar 31, 2026 at 3:56=E2=80=AFPM Zhijie Hou (Fujitsu) > > wrote: > > > > > > On Tuesday, March 31, 2026 2:02 PM Nisha Moond wrote: > > > > > > > > > > > > Please find the updated patch (v6) attached. > > > > > > Thanks for updating the patch. One minor comment: > > > > > > I think we could avoid interrupting and reporting an ERROR when > > > IsSyncingReplicationSlots() returns false to avoid reporting ERROR un= necessarily > > > when the slotsync has already finished. > > > > > > > Thanks for the review. Fixed above in v7. > > Thanks for updating the patch! It looks good to me, with just a few minor= points > . If those are addressed, I'd like to push it. > > + * a new worker (or a new API call) that starts after the old worker was > > "API" feels a bit vague. It might be clearer to explicitly say > "pg_sync_replication_slots()". > Done. > + PROCSIG_SLOTSYNC_MESSAGE, /* ask slotsync worker/API to stop */ > > "API" here also feels a bit vague. So I'd like to use "ask slot synchroni= zation > to stop" as the comment, instead. Done. > + * We cannot rely solely on 'stopSignaled' here because: > + * 1) It resides in shared memory and is visible to all processes, so ch= ecking > + * it directly in ProcessInterrupts() would require additional checks= to > + * ensure only the synchronizing process acts on it. > + * 2) It has different lifetime semantics and cannot be reset after hand= ling, > + * as it also guards against postmaster and promotion race conditions= . > + * 3) Accessing it requires acquiring a spinlock, which can be too expen= sive > + * or undesirable for every ProcessInterrupts() call. > > Now that PROCSIG_SLOTSYNC_MESSAGE is in place, using SlotSyncShutdownPend= ing > is intuitive. So it seems more useful to explain why stopSignaled is stil= l > needed rather than why SlotSyncShutdownPending is used (i.e., why stopSig= naled > is not sufficient). Since that rationale is already covered in the SlotSy= ncCtx > comments, I'd suggest removing this comment block. Okay, done. > > As for backpatching, this looks like it should go back to v17, where slot= sync > was introduced. Thought? Right, the issue exists in v17 as well. Attached the updated patch. -- Thanks, Nisha --0000000000006b2898064e64262a Content-Type: application/octet-stream; name="v8-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Disposition: attachment; filename="v8-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnfy2gjg0 RnJvbSBkYTM3MzM2YjYwYmIzYzkyNDNjMjg2ZDBmMTRlZjJmNzYxMDFhNDhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI1IE1hciAyMDI2IDE4OjA0OjEyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 OF0gUHJldmVudCBzbG90c3luYyB3b3JrZXIvQVBJIGhhbmcgZHVyaW5nIHN0YW5kYnkgcHJvbW90 aW9uCgpEdXJpbmcgc3RhbmRieSBwcm9tb3Rpb24sIFNodXREb3duU2xvdFN5bmMoKSBzaWduYWxz IHRoZSBzbG90c3luYyB3b3JrZXIKdG8gc3RvcCBhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaC4g SWYgdGhlIHdvcmtlciBpcyBibG9ja2VkIGluCldhaXRMYXRjaE9yU29ja2V0KCkgd2FpdGluZyBm b3IgYSByZXNwb25zZSBmcm9tIHRoZSBwcmltYXJ5IChlLmcuLCBkdWUKdG8gYSBuZXR3b3JrIGZh aWx1cmUpLCB0aGUgcHJldmlvdXMgU0lHVVNSMSBzaWduYWwgb25seSBzZXRzIHRoZSBsYXRjaC4K VGhlIHdvcmtlciB3YWtlcyB1cCwgZmluZHMgbm8gcGVuZGluZyBpbnRlcnJ1cHQsIGFuZCBnb2Vz IGJhY2sgdG8Kd2FpdGluZywgY2F1c2luZyBTaHV0RG93blNsb3RTeW5jKCkgdG8gd2FpdCBpbmRl ZmluaXRlbHkgYW5kIGJsb2NraW5nCnByb21vdGlvbi4KCkZpeCB0aGlzIGJ5IGludHJvZHVjaW5n IGEgbmV3IHByb2NzaWduYWwgcmVhc29uIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRS4KVGhlIHNp Z25hbCBoYW5kbGVyIHNldHMgdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBmbGFncyBzbyB0aGF0 CldhaXRMYXRjaE9yU29ja2V0KCkgcmV0dXJucyBhbmQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5 LCBhbGxvd2luZwpwcm9tb3Rpb24gdG8gcHJvY2VlZC4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgfCAxNDMgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgfCAgIDQgKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICB8ICAgNyArCiBzcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaCAgICAgICAgICAgfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5z ZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jCmluZGV4IGU3NWRiNjllM2Y2Li5jNTJjNTEzNTM2MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtODUsMTggKzg1LDE5IEBA CiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gdG8gY29udHJvbCBzbG90IHN5bmNo cm9uaXphdGlvbi4KICAqCiAgKiBUaGUgJ3BpZCcgaXMgZWl0aGVyIHRoZSBzbG90IHN5bmMgd29y a2VyJ3MgcGlkIG9yIHRoZSBiYWNrZW5kJ3MgcGlkIHJ1bm5pbmcKLSAqIHRoZSBTUUwgZnVuY3Rp b24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBXaGVuIHRoZSBzdGFydHVwIHByb2Nlc3Mg c2V0cwotICogJ3N0b3BTaWduYWxlZCcgZHVyaW5nIHByb21vdGlvbiwgaXQgdXNlcyB0aGlzICdw aWQnIHRvIHdha2UgdXAgdGhlIGN1cnJlbnRseQotICogc3luY2hyb25pemluZyBwcm9jZXNzIHNv IHRoYXQgdGhlIHByb2Nlc3MgY2FuIGltbWVkaWF0ZWx5IHN0b3AgaXRzCi0gKiBzeW5jaHJvbml6 aW5nIHdvcmsgb24gc2VlaW5nICdzdG9wU2lnbmFsZWQnIHNldC4KLSAqIFNldHRpbmcgJ3N0b3BT aWduYWxlZCcgaXMgYWxzbyB1c2VkIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gd2hlbiB0 aGUKLSAqIHBvc3RtYXN0ZXIgaGFzIG5vdCBub3RpY2VkIHRoZSBwcm9tb3Rpb24geWV0IGFuZCB0 aHVzIG1heSBlbmQgdXAgcmVzdGFydGluZwotICogdGhlIHNsb3Qgc3luYyB3b3JrZXIuIElmICdz dG9wU2lnbmFsZWQnIGlzIHNldCwgdGhlIHdvcmtlciB3aWxsIGV4aXQgaW4gc3VjaCBhCi0gKiBj YXNlLiBUaGUgU1FMIGZ1bmN0aW9uIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSB3aWxsIGFs c28gZXJyb3Igb3V0IGlmCi0gKiB0aGlzIGZsYWcgaXMgc2V0LiBOb3RlIHRoYXQgd2UgZG9uJ3Qg bmVlZCB0byByZXNldCB0aGlzIHZhcmlhYmxlIGFzIGFmdGVyCi0gKiBwcm9tb3Rpb24gdGhlIHNs b3Qgc3luYyB3b3JrZXIgd29uJ3QgYmUgcmVzdGFydGVkIGJlY2F1c2UgdGhlIHBtU3RhdGUKLSAq IGNoYW5nZXMgdG8gUE1fUlVOIGZyb20gUE1fSE9UX1NUQU5EQlkgYW5kIHdlIGRvbid0IHN1cHBv cnQgZGVtb3RpbmcKLSAqIHByaW1hcnkgd2l0aG91dCByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIuIFNl ZSBMYXVuY2hNaXNzaW5nQmFja2dyb3VuZFByb2Nlc3Nlcy4KKyAqIHRoZSBTUUwgZnVuY3Rpb24g cGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBPbiBwcm9tb3Rpb24sIHRoZSBzdGFydHVwCisg KiBwcm9jZXNzIHNldHMgJ3N0b3BTaWduYWxlZCcgYW5kIHVzZXMgdGhpcyAncGlkJyB0byBzaWdu YWwgdGhlIHN5bmNocm9uaXppbmcKKyAqIHByb2Nlc3Mgd2l0aCBQUk9DU0lHX1NMT1RTWU5DX01F U1NBR0UgYW5kIGFsc28gdG8gd2FrZSBpdCB1cCBzbyB0aGF0IHRoZQorICogcHJvY2VzcyBjYW4g aW1tZWRpYXRlbHkgc3RvcCBpdHMgc3luY2hyb25pemluZyB3b3JrLgorICogU2V0dGluZyAnc3Rv cFNpZ25hbGVkJyBvbiB0aGUgb3RoZXIgaGFuZCBpcyB1c2VkIHRvIGhhbmRsZSB0aGUgcmFjZQor ICogY29uZGl0aW9uIHdoZW4gdGhlIHBvc3RtYXN0ZXIgaGFzIG5vdCBub3RpY2VkIHRoZSBwcm9t b3Rpb24geWV0IGFuZCB0aHVzIG1heQorICogZW5kIHVwIHJlc3RhcnRpbmcgdGhlIHNsb3Qgc3lu YyB3b3JrZXIuIElmICdzdG9wU2lnbmFsZWQnIGlzIHNldCwgdGhlIHdvcmtlcgorICogd2lsbCBl eGl0IGluIHN1Y2ggYSBjYXNlLiBUaGUgU1FMIGZ1bmN0aW9uIHBnX3N5bmNfcmVwbGljYXRpb25f c2xvdHMoKSB3aWxsCisgKiBhbHNvIGVycm9yIG91dCBpZiB0aGlzIGZsYWcgaXMgc2V0LiBOb3Rl IHRoYXQgd2UgZG9uJ3QgbmVlZCB0byByZXNldCB0aGlzCisgKiB2YXJpYWJsZSBhcyBhZnRlciBw cm9tb3Rpb24gdGhlIHNsb3Qgc3luYyB3b3JrZXIgd29uJ3QgYmUgcmVzdGFydGVkIGJlY2F1c2UK KyAqIHRoZSBwbVN0YXRlIGNoYW5nZXMgdG8gUE1fUlVOIGZyb20gUE1fSE9UX1NUQU5EQlkgYW5k IHdlIGRvbid0IHN1cHBvcnQKKyAqIGRlbW90aW5nIHByaW1hcnkgd2l0aG91dCByZXN0YXJ0aW5n IHRoZSBzZXJ2ZXIuCisgKiBTZWUgTGF1bmNoTWlzc2luZ0JhY2tncm91bmRQcm9jZXNzZXMuCiAg KgogICogVGhlICdzeW5jaW5nJyBmbGFnIGlzIG5lZWRlZCB0byBwcmV2ZW50IGNvbmN1cnJlbnQg c2xvdCBzeW5jcyB0byBhdm9pZCBzbG90CiAgKiBvdmVyd3JpdGVzLgpAQCAtMTQxLDYgKzE0Miwx MyBAQCBzdGF0aWMgbG9uZyBzbGVlcF9tcyA9IE1JTl9TTE9UU1lOQ19XT1JLRVJfTkFQVElNRV9N UzsKICAqLwogc3RhdGljIGJvb2wgc3luY2luZ19zbG90cyA9IGZhbHNlOwogCisvKgorICogSW50 ZXJydXB0IGZsYWcgc2V0IHdoZW4gUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFIGlzIHJlY2VpdmVk LCBhc2tpbmcgdGhlCisgKiBzbG90c3luYyB3b3JrZXIgb3IgcGdfc3luY19yZXBsaWNhdGlvbl9z bG90cygpIHRvIHN0b3AgYmVjYXVzZQorICogc3RhbmRieSBwcm9tb3Rpb24gaGFzIGJlZW4gdHJp Z2dlcmVkLgorICovCit2b2xhdGlsZSBzaWdfYXRvbWljX3QgU2xvdFN5bmNTaHV0ZG93blBlbmRp bmcgPSBmYWxzZTsKKwogLyoKICAqIFN0cnVjdHVyZSB0byBob2xkIGluZm9ybWF0aW9uIGZldGNo ZWQgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgYWJvdXQgYSBsb2dpY2FsCiAgKiByZXBsaWNhdGlv biBzbG90LgpAQCAtMTI5MSwzNiArMTI5OSw1MiBAQCBzbG90c3luY19yZXJlYWRfY29uZmlnKHZv aWQpCiB9CiAKIC8qCi0gKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgcHJvY2VzcyBwZXJmb3JtaW5n IHNsb3Qgc3luY2hyb25pemF0aW9uLgorICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0 IGluZGljYXRpbmcgYSBzbG90c3luYyBzaHV0ZG93biBtZXNzYWdlLgorICoKKyAqIFRoaXMgaXMg Y2FsbGVkIHdpdGhpbiB0aGUgU0lHVVNSMSBoYW5kbGVyLiAgQWxsIHdlIGRvIGhlcmUgaXMgc2V0 IGEgZmxhZworICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgdG8gaW52b2tlCisgKiBQcm9jZXNzU2xvdFN5bmNNZXNzYWdlKCkuCiAgKi8KLXN0YXRpYyB2 b2lkCi1Qcm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKHZvaWQpCit2b2lkCitIYW5kbGVTbG90U3lu Y01lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKIHsKLQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCUlu dGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVNsb3RTeW5jU2h1dGRvd25QZW5kaW5nID0gdHJ1ZTsK KwkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwor fQogCi0JaWYgKFNsb3RTeW5jQ3R4LT5zdG9wU2lnbmFsZWQpCi0JewotCQlpZiAoQW1Mb2dpY2Fs U2xvdFN5bmNXb3JrZXJQcm9jZXNzKCkpCi0JCXsKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQllcnJt c2coInJlcGxpY2F0aW9uIHNsb3Qgc3luY2hyb25pemF0aW9uIHdvcmtlciB3aWxsIHN0b3AgYmVj YXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOworLyoKKyAqIEhhbmRsZSBhIFBST0NTSUdf U0xPVFNZTkNfTUVTU0FHRSBzaWduYWwsIGNhbGxlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCku CisgKgorICogSWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyB0aGUgc2xvdHN5bmMgYmFja2dyb3Vu ZCB3b3JrZXIsIGxvZyBhIG1lc3NhZ2UKKyAqIGFuZCBleGl0IGNsZWFubHkuICBJZiBpdCBpcyBh IGJhY2tlbmQgZXhlY3V0aW5nIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSwKKyAqIHJhaXNl IGFuIGVycm9yLCB1bmxlc3MgdGhlIHN5bmMgaGFzIGFscmVhZHkgZmluaXNoZWQsIGluIHdoaWNo IGNhc2UgdGhlcmUKKyAqIGlzIG5vIG5lZWQgdG8gaW50ZXJydXB0IHRoZSBjYWxsZXIuCisgKi8K K3ZvaWQKK1Byb2Nlc3NTbG90U3luY01lc3NhZ2Uodm9pZCkKK3sKKwlTbG90U3luY1NodXRkb3du UGVuZGluZyA9IGZhbHNlOwogCi0JCQlwcm9jX2V4aXQoMCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0J CQkvKgotCQkJICogRm9yIHRoZSBiYWNrZW5kIGV4ZWN1dGluZyBTUUwgZnVuY3Rpb24KLQkJCSAq IHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4KLQkJCSAqLwotCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK LQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3aWxsIHN0b3Ag YmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOwotCQl9CisJaWYgKEFtTG9naWNhbFNs b3RTeW5jV29ya2VyUHJvY2VzcygpKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJZXJybXNnKCJy ZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgd2lsbCBzdG9wIGJlY2F1c2Ug cHJvbW90aW9uIGlzIHRyaWdnZXJlZCIpKTsKKwkJcHJvY19leGl0KDApOwogCX0KKwllbHNlCisJ eworCQkvKgorCQkgKiBJZiBzeW5jIGhhcyBhbHJlYWR5IGNvbXBsZXRlZCwgdGhlcmUgaXMgbm8g bmVlZCB0byBpbnRlcnJ1cHQgdGhlCisJCSAqIGNhbGxlciB3aXRoIGFuIGVycm9yLgorCQkgKi8K KwkJaWYgKCFJc1N5bmNpbmdSZXBsaWNhdGlvblNsb3RzKCkpCisJCQlyZXR1cm47CiAKLQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKLQkJc2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOworCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3 aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOworCX0KIH0KIAogLyoK QEAgLTE0MjcsNiArMTQ1MSwzNCBAQCBjaGVja19hbmRfc2V0X3N5bmNfaW5mbyhwaWRfdCBzeW5j X3Byb2Nlc3NfcGlkKQogewogCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsK IAorCS8qCisJICogRXhpdCBpbW1lZGlhdGVseSBpZiBwcm9tb3Rpb24gaGFzIGJlZW4gdHJpZ2dl cmVkLiAgVGhpcyBndWFyZHMgYWdhaW5zdAorCSAqIGEgbmV3IHdvcmtlciAob3IgYSBjYWxsIHRv IHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSkgdGhhdCBzdGFydHMKKwkgKiBhZnRlciB0aGUg b2xkIHdvcmtlciB3YXMgc3RvcHBlZCBieSBTaHV0RG93blNsb3RTeW5jKCkuCisJICovCisJaWYg KFNsb3RTeW5jQ3R4LT5zdG9wU2lnbmFsZWQpCisJeworCQlTcGluTG9ja1JlbGVhc2UoJlNsb3RT eW5jQ3R4LT5tdXRleCk7CisKKwkJaWYgKEFtTG9naWNhbFNsb3RTeW5jV29ya2VyUHJvY2Vzcygp KQorCQl7CisJCQllcmVwb3J0KERFQlVHMSwKKwkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90 IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSBwcm9tb3Rpb24g d2FzIHRyaWdnZXJlZCIpKTsKKworCQkJcHJvY19leGl0KDApOworCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIEZvciB0aGUgYmFja2VuZCBleGVjdXRpbmcgU1FMIGZ1bmN0aW9uCisJCQkg KiBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCkuCisJCQkgKi8KKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jaHJvbml6YXRpb24gd2lsbCBub3Qg c3RhcnQgYmVjYXVzZSBwcm9tb3Rpb24gd2FzIHRyaWdnZXJlZCIpKTsKKwkJfQorCX0KKwogCWlm IChTbG90U3luY0N0eC0+c3luY2luZykKIAl7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmND dHgtPm11dGV4KTsKQEAgLTE2MzUsNyArMTY4NywxMCBAQCBSZXBsU2xvdFN5bmNXb3JrZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWJv b2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAkJTGlzdAkgICAqcmVtb3RlX3Nsb3RzOwogCi0JCVBy b2Nlc3NTbG90U3luY0ludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwor CQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJCXNsb3RzeW5jX3JlcmVhZF9jb25maWcoKTsK IAogCQkvKgogCQkgKiBUaGUgc3lzY2FjaGUgYWNjZXNzIGluIGZldGNoX3JlbW90ZV9zbG90cygp IG5lZWRzIGEgdHJhbnNhY3Rpb24KQEAgLTE3NDgsMTEgKzE4MDMsMTEgQEAgU2h1dERvd25TbG90 U3luYyh2b2lkKQogCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIAogCS8q Ci0JICogU2lnbmFsIHByb2Nlc3MgZG9pbmcgc2xvdHN5bmMsIGlmIGFueS4gVGhlIHByb2Nlc3Mg d2lsbCBzdG9wIHVwb24KLQkgKiBkZXRlY3RpbmcgdGhhdCB0aGUgc3RvcFNpZ25hbGVkIGZsYWcg aXMgc2V0IHRvIHRydWUuCisJICogU2lnbmFsIHByb2Nlc3MgZG9pbmcgc2xvdHN5bmMsIGlmIGFu eSwgYXNraW5nIGl0IHRvIHN0b3AuCiAJICovCiAJaWYgKHN5bmNfcHJvY2Vzc19waWQgIT0gSW52 YWxpZFBpZCkKLQkJa2lsbChzeW5jX3Byb2Nlc3NfcGlkLCBTSUdVU1IxKTsKKwkJU2VuZFByb2NT aWduYWwoc3luY19wcm9jZXNzX3BpZCwgUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFLAorCQkJCQkg ICBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAogCS8qIFdhaXQgZm9yIHNsb3Qgc3luYyB0byBlbmQg Ki8KIAlmb3IgKDs7KQpAQCAtMTkzMSw5ICsxOTg2LDYgQEAgU3luY1JlcGxpY2F0aW9uU2xvdHMo V2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAKIAkJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQ cm9jUGlkKTsKIAotCQkvKiBDaGVjayBmb3IgaW50ZXJydXB0cyBhbmQgY29uZmlnIGNoYW5nZXMg Ki8KLQkJUHJvY2Vzc1Nsb3RTeW5jSW50ZXJydXB0cygpOwotCiAJCXZhbGlkYXRlX3JlbW90ZV9p bmZvKHdyY29ubik7CiAKIAkJLyogUmV0cnkgdW50aWwgYWxsIHRoZSBzbG90cyBhcmUgc3luYy1y ZWFkeSAqLwpAQCAtMTk0Myw3ICsxOTk1LDEwIEBAIFN5bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJl Y2VpdmVyQ29ubiAqd3Jjb25uKQogCQkJYm9vbAkJc29tZV9zbG90X3VwZGF0ZWQgPSBmYWxzZTsK IAogCQkJLyogQ2hlY2sgZm9yIGludGVycnVwdHMgYW5kIGNvbmZpZyBjaGFuZ2VzICovCi0JCQlQ cm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CisJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJCQlzbG90c3luY19yZXJlYWRfY29uZmln KCk7CiAKIAkJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwog CQkJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYwppbmRleCA3ZTAxN2M4ZDUzYi4uOTk3OTJiMTM3NjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGN0bC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90 c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAg LTcwMCw2ICs3MDEsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykK IAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCiAJ CUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRSkpCisJCUhhbmRsZVNsb3RTeW5jTWVzc2Fn ZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUKSkKIAkJSGFuZGxlUmVjb3ZlcnlDb25mbGljdEludGVycnVwdCgpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKaW5kZXggMTBiZTYwMDExYWQuLmIzY2Y1M2I1MDlmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNl bmRlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKQEAgLTM1NzYsNiAr MzU3Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoUGFyYWxsZWxBcHBseU1l c3NhZ2VQZW5kaW5nKQogCQlQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7CisKKwlpZiAo U2xvdFN5bmNTaHV0ZG93blBlbmRpbmcpCisJCVByb2Nlc3NTbG90U3luY01lc3NhZ2UoKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oCmluZGV4IGU1NDZkMGQwNTBkLi4zNTgz NTA4NzEyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oCkBAIC0xMiwxMCArMTIsMTUg QEAKICNpZm5kZWYgU0xPVFNZTkNfSAogI2RlZmluZSBTTE9UU1lOQ19ICiAKKyNpbmNsdWRlIDxz aWduYWwuaD4KKwogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIHN5bmNfcmVwbGljYXRpb25fc2xvdHM7CiAKKy8qIEludGVycnVw dCBmbGFnIHNldCBieSBIYW5kbGVTbG90U3luY01lc3NhZ2VJbnRlcnJ1cHQoKSAqLworZXh0ZXJu IFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBTbG90U3luY1NodXRkb3duUGVuZGlu ZzsKKwogLyoKICAqIEdVQ3MgbmVlZGVkIGJ5IHNsb3Qgc3luYyB3b3JrZXIgdG8gY29ubmVjdCB0 byB0aGUgcHJpbWFyeQogICogc2VydmVyIGFuZCBjYXJyeSBvbiB3aXRoIHNsb3RzIHN5bmNocm9u aXphdGlvbi4KQEAgLTM0LDUgKzM5LDcgQEAgZXh0ZXJuIGJvb2wgSXNTeW5jaW5nUmVwbGljYXRp b25TbG90cyh2b2lkKTsKIGV4dGVybiBTaXplIFNsb3RTeW5jU2htZW1TaXplKHZvaWQpOwogZXh0 ZXJuIHZvaWQgU2xvdFN5bmNTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBTeW5jUmVwbGlj YXRpb25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubik7CitleHRlcm4gdm9pZCBIYW5kbGVT bG90U3luY01lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzU2xvdFN5 bmNNZXNzYWdlKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVFNZTkNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAppbmRleCAzNDhmYmE1M2E5My4uOWJiZjVkYjY3ZmEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NT SUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19M T0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRl eHRzICovCiAJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20g cGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCVBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRSwJLyog YXNrIHNsb3Qgc3luY2hyb25pemF0aW9uIHRvIHN0b3AgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNULAkvKiBiYWNrZW5kIGlzIGJsb2NraW5nIHJlY292ZXJ5LCBjaGVjawogCQkJCQkJCQkg KiBQR1BST0MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cyBmb3IgdGhlCiAJCQkJCQkJCSAqIHJl YXNvbiAqLwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000006b2898064e64262a--