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 1w5i6E-003XuC-02 for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 10:38:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5i6C-002AiD-0t for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 10:38:00 +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 1w5i6B-002Ai5-33 for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2026 10:38:00 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5i69-00000001GpK-17IZ for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2026 10:38:00 +0000 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-5a0ff30b240so933373e87.0 for ; Thu, 26 Mar 2026 03:37:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774521477; cv=none; d=google.com; s=arc-20240605; b=jehXiLqytSNVk1XzfvtLQX11JIjqtFISCoMX8slIo9/vt4lASLtcFwWQ/ZFHJXWDCV 9ekIs8GAXIIQGPqMREheVgHRupYfsRMHEZo/UtxCCtyvJ42Z/zqXNVVfVIg4eTNGtSQ3 WGe8fGe2uqYVBRYRcOzXqOzV8WfPufeAqsrs+j78d+ODGjjD0A6OBXRwq/2c1f1hAAvK d98ww+SbzS9tLEfdUtcJ0Zvm0Q1SH0sMDjNyt35WURfyl0l7yd2tCBOVsk4RWrZ9UczF yMG+JC0cHC07lcV13IgLGnSwjoDj2X2qGU/vGjuOs6V5UdODJycieNuqj+7Qpq7qTjyB +kGA== 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=GrVCvAzE2vTnwHzLpdKxg3R5vco4HfZpJYbElqZbGT8=; fh=JCqqsoFIJ2iJMk192Ktnzjr+6DdIoNlf1hjcoqFCE9A=; b=lIz2LM7tzufDs2yx5UdTqCHfe9FxBO84ZCYgVh7kRkbUnyVDAyc7mzStRA3Gm/6hPX FhuY7XedQrEgKw4X6/pIPS13lmVzMAj0Ek7g2CDYvQICFDP+NeCySbXpOyqmUvx9tsJe MTg2wZNCP2ZszRb1juC6YnDycxBlL0iduWToXgYuN7Uxh+FC/ZW67h6kZGPIsFXh4nPo 2rQyDRP9AjLqGNMDnIb6HNlS+reRn3CFq+tB5knhpqQ4AUGD9EbaPX4qsEHrjyUbi6oO 4OeyMlow422a4h5upCzb0c9vgpz1GxBOgInjkALLRMrkR8d5rgoedsgvGSA3pmfDQ5gX rSog==; 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=1774521477; x=1775126277; 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=GrVCvAzE2vTnwHzLpdKxg3R5vco4HfZpJYbElqZbGT8=; b=c1lVtdAL/l93CXc5c6nzo7WlHPjBMU+n8Mq4GXIsSYoizZpNk1rSq6yMJ8J6iUj/xk ID06XWE+QRXF8REqp8b/NRzZrRtnjXkCpHT5WRTk/+ANSSGVa7Nj7HwRvwkAFq3RYpDM Ld/iAMjsgNXHDqiD1LCLi4737khizIQK/IzTys8ijrzF99j7Q2VChkhhhzHItJLaBBuj Qae1/GK4VrIOA74bLOrYGvGg/9R2erVpD/9M4ERYCD/2QZCHfLsU/kb/GLAeRLlbrWHB 5CsOitNCSQyCDHa+xXEX8FBTjog6TpmkHz/RV0ieHli6DGszn7QK/iCb0MttqVUkpprF 6qUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774521477; x=1775126277; 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=GrVCvAzE2vTnwHzLpdKxg3R5vco4HfZpJYbElqZbGT8=; b=KH5qeOf73//21iAMSRtpuqjA9V8PksCWWHOZTGbhUXYKf9lp+rYJ10+1VIBDIYAoQ/ +HrL3vs7n+k2oEDun5OW6OZAhK3MRfaj2SCoSUkxjFdG+jvlZNfnajJ2nNZdw8PnDmZL Nzf1nVYAsuhsKrsRL7hSOFpVSAdEZWniurqtWyzrDHaSw1ndXdynP5xRRPNE6ayHlo0n 2uYjIwKmagAsPy6ehORHkVTcDi2axGnTp5NpcnLWwVyyPWA3OlRdIWdAGIytPgiDiDQ/ IKTiPi4fp9POqVxS/Wno6+i2zf7s7YDS5QT/GMcMuoseXTU5e19Nc2ucp367Xz6QsnaI IHEg== X-Forwarded-Encrypted: i=1; AJvYcCUnxd4B8WfgeS+7D0ea+toeWZBnv3Prdia1oNaRQy+3tQbQODbtDA5WadudXxzf+4ltb9vrRKazij0JDXs0@lists.postgresql.org X-Gm-Message-State: AOJu0YxOPi9o4N4NAw4/Cxz0vigW7WzZsLB498WifcfKNBDCLGLGVOnc ybWHPEd2zMc9flJwtU5BxK5ffoZ6qVeH3GGzdpWGWCA8ls6ZpIFpH7AsJ/kJi6Bayeib7zGsaF0 b/YjrglzxfekE7xyxxl2tEs9SVPZLiw== X-Gm-Gg: ATEYQzw1WXZ1Bec14vdaRmp20KEiNkXScgehq8yrsDpbHSRtDTjy79i20DryMIB/8RF 8QqstZP9SGFk3z/vGAlRI+4pSQhIwWjZufaubeHvTsEws04B1FiPPFCLHolTxmd97MOsPNQi1pY UxIQt5JHpfePaDqD2TY3zfE3zdM1pvfNk6mEFThrFGqtErDss8t96twIKVaHtt0dP7Pcu7hVBRB 6kfK8tHmnpPpoM23rjGEEvDv8UH/Lq9kwsKzraW9ThqBiluj4lX1a3rWPc0zsnajKu4WIkkDLVp OckHVHBDO3nut0FoSXTVkbsotSNDdHq/4lEB X-Received: by 2002:a05:6512:33ca:b0:5a1:58d3:a741 with SMTP id 2adb3069b0e04-5a29b9a629fmr2694841e87.44.1774521476323; Thu, 26 Mar 2026 03:37:56 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Thu, 26 Mar 2026 16:07:44 +0530 X-Gm-Features: AQROBzA1FQeRnVT5rQgjCQuWkROcDqiyKgg57AC_Z0FWcR_ipEiNiH26IMFdfBo Message-ID: Subject: Re: Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion? To: Amit Kapila Cc: Fujii Masao , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000003e3b45064deafa94" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003e3b45064deafa94 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 26, 2026 at 3:40=E2=80=AFPM Amit Kapila wrote: > > On Mon, Mar 23, 2026 at 11:21=E2=80=AFAM Fujii Masao wrote: > > > > On Sun, Mar 22, 2026 at 1:52=E2=80=AFAM Amit Kapila wrote: > > > > > > On Wed, Mar 18, 2026 at 9:35=E2=80=AFPM Fujii Masao wrote: > > > > > > > > I noticed that during standby promotion the startup process sends S= IGUSR1 to > > > > the slotsync worker to make it exit. Is there a reason for using SI= GUSR1? > > > > > > > > > > IIRC, this same signal is used for both the backend executing > > > pg_sync_replication_slots() and slotsync worker. We want the worker t= o > > > exit and error_out backend. Using SIGTERM for backend could result in > > > its exit. > > > > Why do we want the backend running pg_sync_replication_slots() to throw > > an error here, rather than just exit? If emitting an error is really re= quired, > > another option would be to store the process type in SlotSyncCtx and se= nd > > different signals accordingly, for example, SIGTERM for the slotsync wo= rker > > and another signal for a backend. But it seems simpler and sufficient t= o have > > the backend exit in this case as well. > > > > As we want to retain the existing behavior for API, so instead of > using two signals, we can achieve what you intend to achieve by one > signal (SIGUSR1) only. We can use SendProcSignal mechanism as is used > ParallelWorkerShutdown. On promotion, we send a SIGUSR1 signal to > slotsync worker/backend via SendProcSignal. Then in > procsignal_sigusr1_handler(), it will call HandleSlotSyncInterrupt. > HandleSlotSyncInterrupt() will set the InterruptPending and > SlotSyncPending flag. Then ProcessInterrupt() will call a slotsync > specific function based on the flag and do what we currently do in > ProcessSlotSyncInterrupts. I think this should address the issue you > are worried about. > +1 Retaining the current behavior for the API backend keeps it consistent with other backends that continue after promotion. In the reproduced case, the worker (or API backend) is waiting in: libpqsrv_get_result -> WaitLatchOrSocket -> WaitEventSetWait. When SIGUSR1 is received, it only sets the latch but does not mark any interrupt as pending. As a result, CHECK_FOR_INTERRUPTS() is effectively a no-op, and the process goes back to waiting. So, control never returns to the slotsync code path, and we cannot rely on stopSignaled to handle exit/error separately. Only SIGTERM works here because its handler sets INTERRUPTS_PENDING_CONDITION, allowing ProcessInterrupts() to run and break the loop. The other signals like SIGUSR1 or SIGINT do not do this, so simply using another signal might not solve the API error handling case. I=E2=80=99ve implemented the above approach suggested by Amit in the attach= ed patch and verified it for both worker and API scenarios. With this, the API can now error-out without exiting the backend. -- Thanks, Nisha --0000000000003e3b45064deafa94 Content-Type: application/octet-stream; name="v2-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Disposition: attachment; filename="v2-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn7c8emy0 RnJvbSAyYzNhNjQ0ZTMwM2EyYzk1MjllZmU2MGFiMWQ0NzgxOTRjYzJmNmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI1IE1hciAyMDI2IDE4OjA0OjEyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 Ml0gUHJldmVudCBzbG90c3luYyB3b3JrZXIvQVBJIGhhbmcgZHVyaW5nIHN0YW5kYnkgcHJvbW90 aW9uCgpEdXJpbmcgc3RhbmRieSBwcm9tb3Rpb24sIFNodXREb3duU2xvdFN5bmMoKSBzaWduYWxz IHRoZSBzbG90c3luYyB3b3JrZXIKdG8gc3RvcCBhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaC4g SWYgdGhlIHdvcmtlciBpcyBibG9ja2VkIGluIFdhaXRMYXRjaE9yU29ja2V0KCkKd2FpdGluZyBm b3IgYSByZXNwb25zZSBmcm9tIHRoZSBwcmltYXJ5IChlLmcuLCBkdWUgdG8gYSBuZXR3b3JrIGZh aWx1cmUpLAp0aGUgcHJldmlvdXMgU0lHVVNSMSBzaWduYWwgb25seSBzZXRzIHRoZSBsYXRjaC4g VGhlIHdvcmtlciB3YWtlcyB1cCwgZmluZHMgbm8KcGVuZGluZyBpbnRlcnJ1cHQsIGFuZCBnb2Vz IGJhY2sgdG8gd2FpdGluZywgY2F1c2luZyBTaHV0RG93blNsb3RTeW5jKCkgdG8gd2FpdAppbmRl ZmluaXRlbHkgYW5kIGJsb2NraW5nIHByb21vdGlvbi4KCkZpeCB0aGlzIGJ5IGludHJvZHVjaW5n IGEgbmV3IHByb2NzaWduYWwgcmVhc29uIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRS4KVGhlIHNp Z25hbCBoYW5kbGVyIHNldHMgdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBmbGFncyBzbyB0aGF0 CldhaXRMYXRjaE9yU29ja2V0KCkgcmV0dXJucyBhbmQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5 LCBhbGxvd2luZyBwcm9tb3Rpb24KdG8gcHJvY2VlZC4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgfCA2OCArKysrKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgfCAgNCArKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwgIDQgKysKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICB8ICA3ICsrKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggICAgICAgICAgIHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2xvdHN5bmMuYwppbmRleCBlNzVkYjY5ZTNmNi4uMTdjMjljZTMzNjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTE0MSw2ICsxNDEsMTMgQEAg c3RhdGljIGxvbmcgc2xlZXBfbXMgPSBNSU5fU0xPVFNZTkNfV09SS0VSX05BUFRJTUVfTVM7CiAg Ki8KIHN0YXRpYyBib29sIHN5bmNpbmdfc2xvdHMgPSBmYWxzZTsKIAorLyoKKyAqIEludGVycnVw dCBmbGFnIHNldCB3aGVuIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRSBpcyByZWNlaXZlZCwgYXNr aW5nIHRoZQorICogc2xvdHN5bmMgd29ya2VyIG9yIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMo KSB0byBzdG9wIGJlY2F1c2UKKyAqIHN0YW5kYnkgcHJvbW90aW9uIGhhcyBiZWVuIHRyaWdnZXJl ZC4KKyAqLwordm9sYXRpbGUgc2lnX2F0b21pY190IFNsb3RTeW5jU2h1dGRvd24gPSBmYWxzZTsK KwogLyoKICAqIFN0cnVjdHVyZSB0byBob2xkIGluZm9ybWF0aW9uIGZldGNoZWQgZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIgYWJvdXQgYSBsb2dpY2FsCiAgKiByZXBsaWNhdGlvbiBzbG90LgpAQCAt MTMyMyw2ICsxMzMwLDQ0IEBAIFByb2Nlc3NTbG90U3luY0ludGVycnVwdHModm9pZCkKIAkJc2xv dHN5bmNfcmVyZWFkX2NvbmZpZygpOwogfQogCisvKgorICogU2lnbmFsIGhhbmRsZXIgY2FsbGVk IChpbiBzaWduYWwgY29udGV4dCkgd2hlbiBQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0UKKyAqIGlz IHJlY2VpdmVkLiAgU2V0cyB0aGUgU2xvdFN5bmNTaHV0ZG93biBmbGFnIHNvIHRoYXQgUHJvY2Vz c0ludGVycnVwdHMoKQorICogd2lsbCBkaXNwYXRjaCB0byBIYW5kbGVTbG90U3luY1NodXRkb3du KCkgYXQgdGhlIG5leHQgc2FmZSBwb2ludC4KKyAqLwordm9pZAorSGFuZGxlU2xvdFN5bmNTaHV0 ZG93bkludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVNsb3RT eW5jU2h1dGRvd24gPSB0cnVlOworfQorCisvKgorICogSGFuZGxlIGEgc2xvdC1zeW5jIHNodXRk b3duIHJlcXVlc3QsIGNhbGxlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCkuCisgKgorICogSWYg dGhlIGN1cnJlbnQgcHJvY2VzcyBpcyB0aGUgc2xvdHN5bmMgYmFja2dyb3VuZCB3b3JrZXIsIGxv ZyBhIG1lc3NhZ2UKKyAqIGFuZCBleGl0IGNsZWFubHkuICBJZiBpdCBpcyBhIGJhY2tlbmQgZXhl Y3V0aW5nIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSwKKyAqIHJhaXNlIGFuIGVycm9yLgor ICovCit2b2lkCitIYW5kbGVTbG90U3luY1NodXRkb3duKHZvaWQpCit7CisJU2xvdFN5bmNTaHV0 ZG93biA9IGZhbHNlOworCisJaWYgKEFtTG9naWNhbFNsb3RTeW5jV29ya2VyUHJvY2VzcygpKQor CXsKKwkJZXJlcG9ydChMT0csCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9u aXphdGlvbiB3b3JrZXIgd2lsbCBzdG9wIGJlY2F1c2UgcHJvbW90aW9uIGlzIHRyaWdnZXJlZCIp KTsKKwkJcHJvY19leGl0KDApOworCX0KKwllbHNlCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJ CWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ ZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3aWxsIHN0b3AgYmVjYXVz ZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOworCX0KK30KKwogLyoKICAqIENvbm5lY3Rpb24g Y2xlYW51cCBmdW5jdGlvbiBmb3Igc2xvdHN5bmMgd29ya2VyLgogICoKQEAgLTE0MjcsNiArMTQ3 MiwyMyBAQCBjaGVja19hbmRfc2V0X3N5bmNfaW5mbyhwaWRfdCBzeW5jX3Byb2Nlc3NfcGlkKQog ewogCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIAorCS8qCisJICogRXhp dCBpbW1lZGlhdGVseSBpZiBwcm9tb3Rpb24gaGFzIGJlZW4gdHJpZ2dlcmVkLiAgVGhpcyBndWFy ZHMgYWdhaW5zdAorCSAqIGEgbmV3IHdvcmtlciAob3IgYSBuZXcgQVBJIGNhbGwpIHRoYXQgc3Rh cnRzIGFmdGVyIHRoZSBvbGQgd29ya2VyIHdhcworCSAqIHN0b3BwZWQgYnkgU2h1dERvd25TbG90 U3luYygpLgorCSAqLworCWlmIChTbG90U3luY0N0eC0+c3RvcFNpZ25hbGVkKQorCXsKKwkJU3Bp bkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOworCisJCWlmIChBbUxvZ2ljYWxTbG90 U3luY1dvcmtlclByb2Nlc3MoKSkKKwkJCXByb2NfZXhpdCgwKTsKKwkJZWxzZQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3 aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOworCX0KKwogCWlmIChT bG90U3luY0N0eC0+c3luY2luZykKIAl7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgt Pm11dGV4KTsKQEAgLTE3NDgsMTEgKzE4MTAsMTEgQEAgU2h1dERvd25TbG90U3luYyh2b2lkKQog CVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIAogCS8qCi0JICogU2lnbmFs IHByb2Nlc3MgZG9pbmcgc2xvdHN5bmMsIGlmIGFueS4gVGhlIHByb2Nlc3Mgd2lsbCBzdG9wIHVw b24KLQkgKiBkZXRlY3RpbmcgdGhhdCB0aGUgc3RvcFNpZ25hbGVkIGZsYWcgaXMgc2V0IHRvIHRy dWUuCisJICogU2lnbmFsIHByb2Nlc3MgZG9pbmcgc2xvdHN5bmMsIGlmIGFueSwgYXNraW5nIGl0 IHRvIHN0b3AuCiAJICovCiAJaWYgKHN5bmNfcHJvY2Vzc19waWQgIT0gSW52YWxpZFBpZCkKLQkJ a2lsbChzeW5jX3Byb2Nlc3NfcGlkLCBTSUdVU1IxKTsKKwkJU2VuZFByb2NTaWduYWwoc3luY19w cm9jZXNzX3BpZCwgUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFLAorCQkJCQkgICBJTlZBTElEX1BS T0NfTlVNQkVSKTsKIAogCS8qIFdhaXQgZm9yIHNsb3Qgc3luYyB0byBlbmQgKi8KIAlmb3IgKDs7 KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDdlMDE3YzhkNTNiLi43NzBl Y2YyYWIxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjQsNiArMjQs NyBAQAogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2FsY3RsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v d2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNzAwLDYgKzcwMSw5IEBAIHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19Q QVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKIAkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRl cnJ1cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdF KSkKKwkJSGFuZGxlU2xvdFN5bmNTaHV0ZG93bkludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUKSkKIAkJSGFuZGxlUmVjb3ZlcnlDb25m bGljdEludGVycnVwdCgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggYjM1NjMxMTMyMTkuLmI4OTcz ZWMwNjQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAicG9z dG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZUhhbmRsZXIuaCIKQEAgLTM1NzYsNiArMzU3Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZv aWQpCiAKIAlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQogCQlQcm9jZXNzUGFyYWxs ZWxBcHBseU1lc3NhZ2VzKCk7CisKKwlpZiAoU2xvdFN5bmNTaHV0ZG93bikKKwkJSGFuZGxlU2xv dFN5bmNTaHV0ZG93bigpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vc2xvdHN5bmMuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKaW5k ZXggZTU0NmQwZDA1MGQuLjIzNDcxYjAxNjFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90c3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5j LmgKQEAgLTEyLDEwICsxMiwxNSBAQAogI2lmbmRlZiBTTE9UU1lOQ19ICiAjZGVmaW5lIFNMT1RT WU5DX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCIKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3luY19yZXBsaWNhdGlvbl9z bG90czsKIAorLyogSW50ZXJydXB0IGZsYWcgc2V0IGJ5IEhhbmRsZVNsb3RTeW5jU2h1dGRvd25J bnRlcnJ1cHQoKSAqLworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBT bG90U3luY1NodXRkb3duOworCiAvKgogICogR1VDcyBuZWVkZWQgYnkgc2xvdCBzeW5jIHdvcmtl ciB0byBjb25uZWN0IHRvIHRoZSBwcmltYXJ5CiAgKiBzZXJ2ZXIgYW5kIGNhcnJ5IG9uIHdpdGgg c2xvdHMgc3luY2hyb25pemF0aW9uLgpAQCAtMzQsNSArMzksNyBAQCBleHRlcm4gYm9vbCBJc1N5 bmNpbmdSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogZXh0ZXJuIFNpemUgU2xvdFN5bmNTaG1lbVNp emUodm9pZCk7CiBleHRlcm4gdm9pZCBTbG90U3luY1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2 b2lkIFN5bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKTsKK2V4dGVy biB2b2lkIEhhbmRsZVNsb3RTeW5jU2h1dGRvd25JbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9p ZCBIYW5kbGVTbG90U3luY1NodXRkb3duKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVFNZ TkNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCAzNDhmYmE1M2E5My4uM2E3NWQ1 MDBlN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVk ZWYgZW51bQogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQg ICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0 aGUgbWVtb3J5IGNvbnRleHRzICovCiAJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAv KiBNZXNzYWdlIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCVBST0NTSUdfU0xPVFNZ TkNfTUVTU0FHRSwJLyogYXNrIHNsb3RzeW5jIHdvcmtlci9BUEkgdG8gc3RvcCAqLwogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1QsCS8qIGJhY2tlbmQgaXMgYmxvY2tpbmcgcmVjb3ZlcnksIGNo ZWNrCiAJCQkJCQkJCSAqIFBHUFJPQy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3RzIGZvciB0aGUK IAkJCQkJCQkJICogcmVhc29uICovCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000003e3b45064deafa94--