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 1w7SAs-005Kgr-12 for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 06:02: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 1w7SAo-0081hS-1n for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 06:01:58 +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 1w7SAo-0081hH-0P for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 06:01:58 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7SAl-000000027bJ-3VKi for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 06:01:58 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-38b13652c87so44868101fa.0 for ; Mon, 30 Mar 2026 23:01:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774936915; cv=none; d=google.com; s=arc-20240605; b=afoiCYKolq2eXDLx1Kp8AUFxC8+4sgdtwk+ZAgZ1EubjfVIvvr652NmXUZOh/gOwBZ NsFaJ5M3W7kqWDSlYRNEDT2dMs112Wb6B5M9Mk9GrGyONECAQYCHMegYcW7yJU5JuIao E6diIHLoZg/CmfW4n0pCZ07s1Cva2J5OPqex5m3y/aOX22EPkbJ1SOprfaRM47EcG5NN p7hKwGF2cKZwc8BSvgytgdQJYCmkGO2cNvbukA0VxNO+rdDtxxjYW4KrbQCN849i3Mmd YENZ9bdqu9LRQyBHzeT0x66KUxosd5VmFS3CW3woQ3kGnNSsj6/ET4k1okuaFsS6v1gG YKyg== 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=25S6uM5e7c5dwdMmNAh5D0j5n19qwUK9eGUZiDF3+EI=; fh=46sx2s8fmrGm5SCL0PUd+6qe2Bi+CsTHU1eTI4G5TI0=; b=A9/UtnqnvduPsh9UNTKX0ErpnrWrhONWnMb7MHd3D5HtFBCQeeuzDvR2+b/f4DaiSn +Soa/Ysqg/hu8MXkxna4sUWPSc3VdKn9ESyhuvWgSRMWWg4zvb4Dn04ufoDqZBaKh3hY syRTIWC7UKwcC2bYOXxGmvbmXtYTzd1kYDCPVpRt/D02Rb0iSf7of8V2m4ldpNQo5dMi GFP96+7BK3X8Ye1VWMtoSyxwwPYYX3bhjrdPArto8suxw/2XlvGHY4x+GNo2ZualwL3U KqTOJnFDMQgNLKoBwF4+7hItFZ4u/jGgZDwDa3+qr6+ZXPoAV3na/YX3+frtKKpzHtEY uV4Q==; 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=1774936915; x=1775541715; 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=25S6uM5e7c5dwdMmNAh5D0j5n19qwUK9eGUZiDF3+EI=; b=BaFPtZXx7nJMQvhJ1EeILGWljdpZv2akRfmaef7+bu1fZr6K4u+S716VzofhAYqAsL CXDz+U/wwkMJGDefOxzrPY4iH+8Ozxe/27q+7j+H9yQ32nL9Mq++KDHoVS4nhFlIsHuM FQzDbMFS2icLE0UmT5kjIkZV0aMpdi2wRbffAEyIyKN1awUUGK/Iw0HSiQZUfzA/S+pb wrh0QmWdl6wwmfhEdO+aN4VXfD0nRLho8ACoqnzsTl662IVcL8gmrDh3gjLdfHQp1uTa HEADUdpQ1WZ4t4N4nvT7gFmzQ7M5xr9B2adRTEpgF54taQon9FU0m75ywSKXrW6G16jd qyHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774936915; x=1775541715; 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=25S6uM5e7c5dwdMmNAh5D0j5n19qwUK9eGUZiDF3+EI=; b=bw9XsGq5k7xj2slGpAbcPQzkBFpbQpMQZ2PqII0fzQKg6uNVdSclxW5JxhkFt2ijS4 ZLJHlf4Qxtl1jcDAybAUIIJuZRoZbkLpaq7YUs6ZvYS+ScNZG/EJtjMJ9TwsJHwsuvir 411fYCzhSvEG9iA+GFZi4KAAG/cMvLmG4hCPxNohlbWFlWiGax/mQHtUzAMG3dN5RbD9 pDu4Sg4S8rpRXNa4l9qditxTaTqJzjju/1QWl3d3xsPoZGI1jZQCuLyU75i4DGdx5ofU Itn3a08/K0gv2ylGxGFz4wJ6rd8LY+qJ1Z/+R0lis3e69YbQEKo1HIkecIpHMsHZnfho 7Abw== X-Forwarded-Encrypted: i=1; AJvYcCWLnQBsPp5WeZUXkTYuWDTE3/XRNij0KN1YElVq4rDOT6KF5U6U9TvfsG8pFDDeex3JWO4/F1BEjSdfpJcu@lists.postgresql.org X-Gm-Message-State: AOJu0YxdmrNVWUEuGViE3vKSv4+vI44AAyNeL0N+0xy4zycP50rxJyRb zoyQVGVxtpj38vhGohIrk4OGAaw3y7oZ2SkU4XMK/1/EXKEGxbpyx7oIJzx/0hOMhNVfNIJAqtC GLKbCFyQy2/M6zoblyrxy//YrSD1+Og== X-Gm-Gg: ATEYQzwMwkQN36tFw/x4CowKVKgyjeBeSORl9fNZze1VWw+tV5BcqpDdYOtqwcHnj2D moVwh9VATP6UCPtM/HLlagLw+unl0j8IIibSO1lxt9gwJ4ClEJmv92Zv5D3EbYmM0WX2dgHYKj1 c1AqmHsDnSIuPB+r70B4V6J1fQOnnImgW6yI6pFJN3tauwLDZPVTYBJdyiOvPpV5DUde/cj3eVU PKN1aD9rdwXUje8OcQkLD0TiTnYV60OQLlgNH467sLBRfWJSd9abDZO9gO9PrO5SWhSiapOMfWn egETT5offczHgj79aP+CYmgLTaIvsfdQizw= X-Received: by 2002:a05:651c:1615:b0:37c:d689:7e1c with SMTP id 38308e7fff4ca-38c73ff14ddmr43536821fa.23.1774936914607; Mon, 30 Mar 2026 23:01:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 31 Mar 2026 11:31:41 +0530 X-Gm-Features: AQROBzCTRWtmGSe2G9hdpY-DAMN7YR4YGzuCmSn-PUCDPOhpoWKmjmuQTksqVjQ Message-ID: Subject: Re: Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion? To: shveta malik Cc: Fujii Masao , Amit Kapila , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004b5b85064e4bb4cf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004b5b85064e4bb4cf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 30, 2026 at 3:52=E2=80=AFPM shveta malik wrote: > > On Mon, Mar 30, 2026 at 9:48=E2=80=AFAM Nisha Moond wrote: > > > > Thanks for the patch Nisha. Few trivial things: > > 1) > + * Signal handler called (in signal context) when PROCSIG_SLOTSYNC_MESSA= GE > + * is received. Sets the SlotSyncShutdownPending flag so that > ProcessInterrupts() > + * will dispatch to ProcessSlotSyncMessage() at the next safe point. > */ > +void > +HandleSlotSyncMessageInterrupt(void) > > Can we please change the comment to below. > Below suggestion is based on how we have written comments atop other > such Handle*() functions > > /* > * Handle receipt of an interrupt indicating a slotsync shutdown message > * > * This is called within SIGUSR1 handler. All we do here is set a flag > * that will cause the next CHECK_FOR_INTERRUPTS() to invoke > * ProcessSlotSyncMessage(). > */ > Fixed. > 2) > I tried to consider whether 'stopSignaled' alone would be sufficient > for our purposes, and whether we really need > 'SlotSyncShutdownPending'. It seems that relying solely on > stopSignaled could be problematic: > > a) stopSignaled resides in shared memory, so once it is set, it > becomes visible to all other processes. If another process executes > ProcessInterrupts(), it might incorrectly start handling slot sync > shutdown. While this could be made to work, it would require extra > checks to ensure that only the actual synchronizing process reacts. > b) Unlike SlotSyncShutdownPending, we cannot reset stopSignaled, since > it is also used to handle race conditions between the postmaster and > promotion by the startup process. > c) Accessing stopSignaled requires acquiring a mutex. It is unclear if > that is a good idea in ProcessInterrupts(), since every time a process > calls CHECK_FOR_INTERRUPTS(), it would need to acquire the mutex to > decide whether to execute ProcessSlotSyncMessage(). > > Given these considerations, I think it makes sense to retain both > stopSignaled and SlotSyncShutdownPending, but we should add a comment > above SlotSyncShutdownPending explaining why stopSignaled alone is not > sufficient. > Done. Please find the updated patch (v6) attached. -- Thanks, Nisha --0000000000004b5b85064e4bb4cf Content-Type: application/octet-stream; name="v6-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Disposition: attachment; filename="v6-0001-Prevent-slotsync-worker-API-hang-during-standby-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mne7ixuj0 RnJvbSBkMWRlOGE2Nzk3ZmQzM2Y5NWQ1OTE5NjQxNzJjOTVhODRiZWVlZWU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI1IE1hciAyMDI2IDE4OjA0OjEyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 Nl0gUHJldmVudCBzbG90c3luYyB3b3JrZXIvQVBJIGhhbmcgZHVyaW5nIHN0YW5kYnkgcHJvbW90 aW9uCgpEdXJpbmcgc3RhbmRieSBwcm9tb3Rpb24sIFNodXREb3duU2xvdFN5bmMoKSBzaWduYWxz IHRoZSBzbG90c3luYyB3b3JrZXIKdG8gc3RvcCBhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaC4g SWYgdGhlIHdvcmtlciBpcyBibG9ja2VkIGluCldhaXRMYXRjaE9yU29ja2V0KCkgd2FpdGluZyBm b3IgYSByZXNwb25zZSBmcm9tIHRoZSBwcmltYXJ5IChlLmcuLCBkdWUKdG8gYSBuZXR3b3JrIGZh aWx1cmUpLCB0aGUgcHJldmlvdXMgU0lHVVNSMSBzaWduYWwgb25seSBzZXRzIHRoZSBsYXRjaC4K VGhlIHdvcmtlciB3YWtlcyB1cCwgZmluZHMgbm8gcGVuZGluZyBpbnRlcnJ1cHQsIGFuZCBnb2Vz IGJhY2sgdG8Kd2FpdGluZywgY2F1c2luZyBTaHV0RG93blNsb3RTeW5jKCkgdG8gd2FpdCBpbmRl ZmluaXRlbHkgYW5kIGJsb2NraW5nCnByb21vdGlvbi4KCkZpeCB0aGlzIGJ5IGludHJvZHVjaW5n IGEgbmV3IHByb2NzaWduYWwgcmVhc29uIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRS4KVGhlIHNp Z25hbCBoYW5kbGVyIHNldHMgdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBmbGFncyBzbyB0aGF0 CldhaXRMYXRjaE9yU29ja2V0KCkgcmV0dXJucyBhbmQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5 LCBhbGxvd2luZwpwcm9tb3Rpb24gdG8gcHJvY2VlZC4KLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgfCAxMzEgKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgfCAgIDQgKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICB8ICAgNyArKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggICAgICAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTA5IGlu c2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2xvdHN5bmMuYwppbmRleCBlNzVkYjY5ZTNmNi4uN2Y2ZTVlZjE0ZWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTg1LDExICs4NSwxMSBA QAogICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIHRvIGNvbnRyb2wgc2xvdCBzeW5j aHJvbml6YXRpb24uCiAgKgogICogVGhlICdwaWQnIGlzIGVpdGhlciB0aGUgc2xvdCBzeW5jIHdv cmtlcidzIHBpZCBvciB0aGUgYmFja2VuZCdzIHBpZCBydW5uaW5nCi0gKiB0aGUgU1FMIGZ1bmN0 aW9uIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4gV2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNz IHNldHMKLSAqICdzdG9wU2lnbmFsZWQnIGR1cmluZyBwcm9tb3Rpb24sIGl0IHVzZXMgdGhpcyAn cGlkJyB0byB3YWtlIHVwIHRoZSBjdXJyZW50bHkKLSAqIHN5bmNocm9uaXppbmcgcHJvY2VzcyBz byB0aGF0IHRoZSBwcm9jZXNzIGNhbiBpbW1lZGlhdGVseSBzdG9wIGl0cwotICogc3luY2hyb25p emluZyB3b3JrIG9uIHNlZWluZyAnc3RvcFNpZ25hbGVkJyBzZXQuCi0gKiBTZXR0aW5nICdzdG9w U2lnbmFsZWQnIGlzIGFsc28gdXNlZCB0byBoYW5kbGUgdGhlIHJhY2UgY29uZGl0aW9uIHdoZW4g dGhlCisgKiB0aGUgU1FMIGZ1bmN0aW9uIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4gT24g cHJvbW90aW9uLAorICogdGhlIHN0YXJ0dXAgcHJvY2VzcyBzZXRzICdzdG9wU2lnbmFsZWQnIGFu ZCB1c2VzIHRoaXMgJ3BpZCcgdG8gd2FrZSB1cAorICogdGhlIGN1cnJlbnRseSBzeW5jaHJvbml6 aW5nIHByb2Nlc3Mgc28gdGhhdCB0aGUgcHJvY2VzcyBjYW4KKyAqIGltbWVkaWF0ZWx5IHN0b3Ag aXRzIHN5bmNocm9uaXppbmcgd29yay4KKyAqIFNldHRpbmcgJ3N0b3BTaWduYWxlZCcgaXMgdXNl ZCB0byBoYW5kbGUgdGhlIHJhY2UgY29uZGl0aW9uIHdoZW4gdGhlCiAgKiBwb3N0bWFzdGVyIGhh cyBub3Qgbm90aWNlZCB0aGUgcHJvbW90aW9uIHlldCBhbmQgdGh1cyBtYXkgZW5kIHVwIHJlc3Rh cnRpbmcKICAqIHRoZSBzbG90IHN5bmMgd29ya2VyLiBJZiAnc3RvcFNpZ25hbGVkJyBpcyBzZXQs IHRoZSB3b3JrZXIgd2lsbCBleGl0IGluIHN1Y2ggYQogICogY2FzZS4gVGhlIFNRTCBmdW5jdGlv biBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCkgd2lsbCBhbHNvIGVycm9yIG91dCBpZgpAQCAt MTQxLDYgKzE0MSwyMiBAQCBzdGF0aWMgbG9uZyBzbGVlcF9tcyA9IE1JTl9TTE9UU1lOQ19XT1JL RVJfTkFQVElNRV9NUzsKICAqLwogc3RhdGljIGJvb2wgc3luY2luZ19zbG90cyA9IGZhbHNlOwog CisvKgorICogSW50ZXJydXB0IGZsYWcgc2V0IHdoZW4gUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdF IGlzIHJlY2VpdmVkLCBhc2tpbmcgdGhlCisgKiBzbG90c3luYyB3b3JrZXIgb3IgcGdfc3luY19y ZXBsaWNhdGlvbl9zbG90cygpIHRvIHN0b3AgYmVjYXVzZQorICogc3RhbmRieSBwcm9tb3Rpb24g aGFzIGJlZW4gdHJpZ2dlcmVkLgorICoKKyAqIFdlIGNhbm5vdCByZWx5IHNvbGVseSBvbiAnc3Rv cFNpZ25hbGVkJyBoZXJlIGJlY2F1c2U6CisgKiAxKSBJdCByZXNpZGVzIGluIHNoYXJlZCBtZW1v cnkgYW5kIGlzIHZpc2libGUgdG8gYWxsIHByb2Nlc3Nlcywgc28gY2hlY2tpbmcKKyAqICAgIGl0 IGRpcmVjdGx5IGluIFByb2Nlc3NJbnRlcnJ1cHRzKCkgd291bGQgcmVxdWlyZSBhZGRpdGlvbmFs IGNoZWNrcyB0bworICogICAgZW5zdXJlIG9ubHkgdGhlIHN5bmNocm9uaXppbmcgcHJvY2VzcyBh Y3RzIG9uIGl0LgorICogMikgSXQgaGFzIGRpZmZlcmVudCBsaWZldGltZSBzZW1hbnRpY3MgYW5k IGNhbm5vdCBiZSByZXNldCBhZnRlciBoYW5kbGluZywKKyAqICAgIGFzIGl0IGFsc28gZ3VhcmRz IGFnYWluc3QgcG9zdG1hc3RlciBhbmQgcHJvbW90aW9uIHJhY2UgY29uZGl0aW9ucy4KKyAqIDMp IEFjY2Vzc2luZyBpdCByZXF1aXJlcyBhY3F1aXJpbmcgYSBzcGlubG9jaywgd2hpY2ggY2FuIGJl IHRvbyBleHBlbnNpdmUKKyAqICAgIG9yIHVuZGVzaXJhYmxlIGZvciBldmVyeSBQcm9jZXNzSW50 ZXJydXB0cygpIGNhbGwuCisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBTbG90U3luY1NodXRk b3duUGVuZGluZyA9IGZhbHNlOworCiAvKgogICogU3RydWN0dXJlIHRvIGhvbGQgaW5mb3JtYXRp b24gZmV0Y2hlZCBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciBhYm91dCBhIGxvZ2ljYWwKICAqIHJl cGxpY2F0aW9uIHNsb3QuCkBAIC0xMjkxLDM2ICsxMzA3LDQ0IEBAIHNsb3RzeW5jX3JlcmVhZF9j b25maWcodm9pZCkKIH0KIAogLyoKLSAqIEludGVycnVwdCBoYW5kbGVyIGZvciBwcm9jZXNzIHBl cmZvcm1pbmcgc2xvdCBzeW5jaHJvbml6YXRpb24uCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBp bnRlcnJ1cHQgaW5kaWNhdGluZyBhIHNsb3RzeW5jIHNodXRkb3duIG1lc3NhZ2UuCisgKgorICog VGhpcyBpcyBjYWxsZWQgd2l0aGluIHRoZSBTSUdVU1IxIGhhbmRsZXIuICBBbGwgd2UgZG8gaGVy ZSBpcyBzZXQgYSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSB0byBpbnZva2UKKyAqIFByb2Nlc3NTbG90U3luY01lc3NhZ2UoKS4KICAqLwot c3RhdGljIHZvaWQKLVByb2Nlc3NTbG90U3luY0ludGVycnVwdHModm9pZCkKK3ZvaWQKK0hhbmRs ZVNsb3RTeW5jTWVzc2FnZUludGVycnVwdCh2b2lkKQogewotCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJU2xvdFN5bmNTaHV0ZG93blBlbmRpbmcg PSB0cnVlOworCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyICovCit9CiAKLQlpZiAoU2xvdFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKLQl7Ci0JCWlmIChB bUxvZ2ljYWxTbG90U3luY1dvcmtlclByb2Nlc3MoKSkKLQkJewotCQkJZXJlcG9ydChMT0csCi0J CQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jaHJvbml6YXRpb24gd29ya2VyIHdpbGwg c3RvcCBiZWNhdXNlIHByb21vdGlvbiBpcyB0cmlnZ2VyZWQiKSk7CisvKgorICogSGFuZGxlIGEg UFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFIHNpZ25hbCwgY2FsbGVkIGZyb20gUHJvY2Vzc0ludGVy cnVwdHMoKS4KKyAqCisgKiBJZiB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHRoZSBzbG90c3luYyBi YWNrZ3JvdW5kIHdvcmtlciwgbG9nIGEgbWVzc2FnZQorICogYW5kIGV4aXQgY2xlYW5seS4gIElm IGl0IGlzIGEgYmFja2VuZCBleGVjdXRpbmcgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLAor ICogcmFpc2UgYW4gZXJyb3IuCisgKi8KK3ZvaWQKK1Byb2Nlc3NTbG90U3luY01lc3NhZ2Uodm9p ZCkKK3sKKwlTbG90U3luY1NodXRkb3duUGVuZGluZyA9IGZhbHNlOwogCi0JCQlwcm9jX2V4aXQo MCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogRm9yIHRoZSBiYWNrZW5kIGV4ZWN1 dGluZyBTUUwgZnVuY3Rpb24KLQkJCSAqIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4KLQkJ CSAqLwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5 bmNocm9uaXphdGlvbiB3aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikp OwotCQl9CisJaWYgKEFtTG9naWNhbFNsb3RTeW5jV29ya2VyUHJvY2VzcygpKQorCXsKKwkJZXJl cG9ydChMT0csCisJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3 b3JrZXIgd2lsbCBzdG9wIGJlY2F1c2UgcHJvbW90aW9uIGlzIHRyaWdnZXJlZCIpKTsKKwkJcHJv Y19leGl0KDApOworCX0KKwllbHNlCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJy ZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3aWxsIHN0b3AgYmVjYXVzZSBwcm9tb3Rp b24gaXMgdHJpZ2dlcmVkIikpOwogCX0KLQotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQlz bG90c3luY19yZXJlYWRfY29uZmlnKCk7CiB9CiAKIC8qCkBAIC0xNDI3LDYgKzE0NTEsMzQgQEAg Y2hlY2tfYW5kX3NldF9zeW5jX2luZm8ocGlkX3Qgc3luY19wcm9jZXNzX3BpZCkKIHsKIAlTcGlu TG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKKwkvKgorCSAqIEV4aXQgaW1tZWRp YXRlbHkgaWYgcHJvbW90aW9uIGhhcyBiZWVuIHRyaWdnZXJlZC4gIFRoaXMgZ3VhcmRzIGFnYWlu c3QKKwkgKiBhIG5ldyB3b3JrZXIgKG9yIGEgbmV3IEFQSSBjYWxsKSB0aGF0IHN0YXJ0cyBhZnRl ciB0aGUgb2xkIHdvcmtlciB3YXMKKwkgKiBzdG9wcGVkIGJ5IFNodXREb3duU2xvdFN5bmMoKS4K KwkgKi8KKwlpZiAoU2xvdFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKKwl7CisJCVNwaW5Mb2NrUmVs ZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKKworCQlpZiAoQW1Mb2dpY2FsU2xvdFN5bmNXb3Jr ZXJQcm9jZXNzKCkpCisJCXsKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQllcnJtc2coInJlcGxpY2F0 aW9uIHNsb3Qgc3luY2hyb25pemF0aW9uIHdvcmtlciB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHBy b21vdGlvbiB3YXMgdHJpZ2dlcmVkIikpOworCisJCQlwcm9jX2V4aXQoMCk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkvKgorCQkJICogRm9yIHRoZSBiYWNrZW5kIGV4ZWN1dGluZyBTUUwgZnVuY3Rp b24KKwkJCSAqIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4KKwkJCSAqLworCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IHN5bmNocm9uaXphdGlvbiB3 aWxsIG5vdCBzdGFydCBiZWNhdXNlIHByb21vdGlvbiB3YXMgdHJpZ2dlcmVkIikpOworCQl9CisJ fQorCiAJaWYgKFNsb3RTeW5jQ3R4LT5zeW5jaW5nKQogCXsKIAkJU3BpbkxvY2tSZWxlYXNlKCZT bG90U3luY0N0eC0+bXV0ZXgpOwpAQCAtMTYzNSw3ICsxNjg3LDEwIEBAIFJlcGxTbG90U3luY1dv cmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCQlMaXN0CSAgICpyZW1vdGVfc2xvdHM7 CiAKLQkJUHJvY2Vzc1Nsb3RTeW5jSW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOworCisJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQkJc2xvdHN5bmNfcmVyZWFkX2Nv bmZpZygpOwogCiAJCS8qCiAJCSAqIFRoZSBzeXNjYWNoZSBhY2Nlc3MgaW4gZmV0Y2hfcmVtb3Rl X3Nsb3RzKCkgbmVlZHMgYSB0cmFuc2FjdGlvbgpAQCAtMTc0OCwxMSArMTgwMywxMSBAQCBTaHV0 RG93blNsb3RTeW5jKHZvaWQpCiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgp OwogCiAJLyoKLQkgKiBTaWduYWwgcHJvY2VzcyBkb2luZyBzbG90c3luYywgaWYgYW55LiBUaGUg cHJvY2VzcyB3aWxsIHN0b3AgdXBvbgotCSAqIGRldGVjdGluZyB0aGF0IHRoZSBzdG9wU2lnbmFs ZWQgZmxhZyBpcyBzZXQgdG8gdHJ1ZS4KKwkgKiBTaWduYWwgcHJvY2VzcyBkb2luZyBzbG90c3lu YywgaWYgYW55LCBhc2tpbmcgaXQgdG8gc3RvcC4KIAkgKi8KIAlpZiAoc3luY19wcm9jZXNzX3Bp ZCAhPSBJbnZhbGlkUGlkKQotCQlraWxsKHN5bmNfcHJvY2Vzc19waWQsIFNJR1VTUjEpOworCQlT ZW5kUHJvY1NpZ25hbChzeW5jX3Byb2Nlc3NfcGlkLCBQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0Us CisJCQkJCSAgIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJLyogV2FpdCBmb3Igc2xvdCBzeW5j IHRvIGVuZCAqLwogCWZvciAoOzspCkBAIC0xOTMxLDkgKzE5ODYsNiBAQCBTeW5jUmVwbGljYXRp b25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIAogCQljaGVja19hbmRfc2V0X3N5bmNf aW5mbyhNeVByb2NQaWQpOwogCi0JCS8qIENoZWNrIGZvciBpbnRlcnJ1cHRzIGFuZCBjb25maWcg Y2hhbmdlcyAqLwotCQlQcm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKCk7Ci0KIAkJdmFsaWRhdGVf cmVtb3RlX2luZm8od3Jjb25uKTsKIAogCQkvKiBSZXRyeSB1bnRpbCBhbGwgdGhlIHNsb3RzIGFy ZSBzeW5jLXJlYWR5ICovCkBAIC0xOTQzLDcgKzE5OTUsMTAgQEAgU3luY1JlcGxpY2F0aW9uU2xv dHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAJCQlib29sCQlzb21lX3Nsb3RfdXBkYXRlZCA9 IGZhbHNlOwogCiAJCQkvKiBDaGVjayBmb3IgaW50ZXJydXB0cyBhbmQgY29uZmlnIGNoYW5nZXMg Ki8KLQkJCVByb2Nlc3NTbG90U3luY0ludGVycnVwdHMoKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CisKKwkJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQkJCXNsb3RzeW5jX3JlcmVh ZF9jb25maWcoKTsKIAogCQkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0 YXRlICovCiAJCQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDdlMDE3YzhkNTNiLi45OTc5MmIxMzc2MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInBv cnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lw Yy5oIgpAQCAtNzAwLDYgKzcwMSw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05B TF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNT QUdFKSkKIAkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKIAorCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFKSkKKwkJSGFuZGxlU2xvdFN5 bmNNZXNzYWdlSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1QpKQogCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwppbmRleCBiMzU2MzExMzIxOS4uYjA5NDNhYmI4NWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5 bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgpAQCAt MzU3Niw2ICszNTc3LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChQYXJhbGxl bEFwcGx5TWVzc2FnZVBlbmRpbmcpCiAJCVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsK KworCWlmIChTbG90U3luY1NodXRkb3duUGVuZGluZykKKwkJUHJvY2Vzc1Nsb3RTeW5jTWVzc2Fn ZSgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5 bmMuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKaW5kZXggZTU0NmQwZDA1 MGQuLjM1ODM1MDg3MTI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 c3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKQEAgLTEyLDEw ICsxMiwxNSBAQAogI2lmbmRlZiBTTE9UU1lOQ19ICiAjZGVmaW5lIFNMT1RTWU5DX0gKIAorI2lu Y2x1ZGUgPHNpZ25hbC5oPgorCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIK IAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3luY19yZXBsaWNhdGlvbl9zbG90czsKIAorLyog SW50ZXJydXB0IGZsYWcgc2V0IGJ5IEhhbmRsZVNsb3RTeW5jTWVzc2FnZUludGVycnVwdCgpICov CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFNsb3RTeW5jU2h1dGRv d25QZW5kaW5nOworCiAvKgogICogR1VDcyBuZWVkZWQgYnkgc2xvdCBzeW5jIHdvcmtlciB0byBj b25uZWN0IHRvIHRoZSBwcmltYXJ5CiAgKiBzZXJ2ZXIgYW5kIGNhcnJ5IG9uIHdpdGggc2xvdHMg c3luY2hyb25pemF0aW9uLgpAQCAtMzQsNSArMzksNyBAQCBleHRlcm4gYm9vbCBJc1N5bmNpbmdS ZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogZXh0ZXJuIFNpemUgU2xvdFN5bmNTaG1lbVNpemUodm9p ZCk7CiBleHRlcm4gdm9pZCBTbG90U3luY1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFN5 bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKTsKK2V4dGVybiB2b2lk IEhhbmRsZVNsb3RTeW5jTWVzc2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nl c3NTbG90U3luY01lc3NhZ2Uodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UU1lOQ19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDM0OGZiYTUzYTkzLi4zYTc1ZDUwMGU3YyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBlbnVt CiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQ Uk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1v cnkgY29udGV4dHMgKi8KIAlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3Nh Z2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJUFJPQ1NJR19TTE9UU1lOQ19NRVNT QUdFLAkvKiBhc2sgc2xvdHN5bmMgd29ya2VyL0FQSSB0byBzdG9wICovCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVCwJLyogYmFja2VuZCBpcyBibG9ja2luZyByZWNvdmVyeSwgY2hlY2sKIAkJ CQkJCQkJICogUEdQUk9DLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMgZm9yIHRoZQogCQkJCQkJ CQkgKiByZWFzb24gKi8KLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000004b5b85064e4bb4cf--