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 1wF9ye-004njK-2w for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 12:13:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wF9yc-008X5x-2x for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 12:13:14 +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.96) (envelope-from ) id 1wF9yc-008X5o-1C for pgsql-hackers@lists.postgresql.org; Tue, 21 Apr 2026 12:13:14 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wF9ya-0000000255M-02IZ for pgsql-hackers@lists.postgresql.org; Tue, 21 Apr 2026 12:13:13 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-6948579e5e9so1070904eaf.2 for ; Tue, 21 Apr 2026 05:13:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776773592; cv=none; d=google.com; s=arc-20240605; b=Yi3iHS2zBB8veJqX6QcZTi3cDBnGOhhMnjUfhRJgL2MPKqby90VbauZ1wWnLXWlLrI yllmOyGojciAW7S8n7V0hH38o+Puqk5wHLFd7rJdRJKYdZysj4oZl8xGki9wUqaIRLPr uckiViSi4En6lAAaPrymz/amJCY79aZOZpPBOfSInzM/9/ZUwH1gDC4DpHhCHzVajJyp I50lz+2zhapH2Btn9AbXU5qivKPUKQdB61Qekj4WOqXQJ3TKNTxbnNc4+FdfVqieCn8a cOKEseDDc0v6dvVCxEjy1f7EtM0XAZTFGn/VLzoHpXfIhLtVt78BpOMET2eqfYD8B0Js /LTQ== 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=y5mCVSr2eTMNJHeOiM2Tc63mg0jzktcTzEDa04P9Z3s=; fh=XN7XC/Sui4CIE6OCP3yoesr9pGHMvvFkYv2JY8kZEYk=; b=BhEiNFs2DYs3mKnIhfYUeoWCWkR8hLjUnJEs4JGSN4MrwjZz7GHzBO6iX6H1VoqQFD T1MFae4nngI49rGhzHxDrSBaIsi3XHHVytcXgG3h0cnrHpNGa4ZBTzlj87OPt3pVik7O T8Q2B4SM8PpgelGY6sVQ/Da2bYourXHwTXX0RUAtDOTSFgYYt8U05aOUatFabOTeXXhF /8SL60sZp3Z+ClOhcTmy70VKEZmGNYRd/VlsYg2dR0zhpZl6jWAUvL6BxtF30vgdExCO EpHqeBBUiWjckoJHA7D63rzU0EtyrUMCUhp8GHERpLTa/XRAp4Z3eprbR4g31kFyIQmS 4GtA==; 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=1776773592; x=1777378392; 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=y5mCVSr2eTMNJHeOiM2Tc63mg0jzktcTzEDa04P9Z3s=; b=Sor5o7auM+1TtKC6mG7jwLk5UeeMpjzZWHjSko9PJwL9ZgVF7Kn8rqs5XFTzZp9Vxu 1SZbMMYwEaRkSmif/1xVH523TqoJL8Ev3tY9shR/A4j6K4jwdk1tuddhdtHiWgP4jy6N 6C6QPxhiRB8qbN+i5uUNAMtYLNtYyWTqEHmdTjrMpUz4VPFS4Nr+Vg8Tx7kaGBUk1Tc0 ynS2uiWqgpxqValDJeWoDsqoHsjsIDQ3juhQ6BeLKcgZSdlsRALLexPG9bGvOc0MqaMB vFHu5hS03W/BbgMfY5ydjV+42nd+Tia4BP1sTIPFAQl6W9DGg3ruw42I5u/jia8sP01K WmLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776773592; x=1777378392; 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=y5mCVSr2eTMNJHeOiM2Tc63mg0jzktcTzEDa04P9Z3s=; b=lPJhIUS+lJ1VuEbkHOWX1HIRPn6w9bQBnkBxwdiG51eeiZmUOonx46szguzqIQp/vQ 5Mo77X7N/hWYvb8KZvUjxraE+MhUl0v6JvRVm5+hfMdzA1HlHh5IZ5Pe6ivrO4Tu/3bJ fYhXyPuLSQ3VDVB/zUi6rj3zm+zaAqWIXNZfzxqLhjHYz4XsBts3heaC7mo0KPOIbnAV Bdw9YiDWpWKuPIRXcYBO1YaxflsVWel8SU4hwemSWMIu1hy1KmbsSVdcNCrgc/PPr5XN BTPljgnQtU2y4QykmKKNA8sbv4jjMkaC19TxpHKLyjlU07cpIzgxQaZS8qZ/Zx/bdHhV dw0w== X-Gm-Message-State: AOJu0YyeiMsNgEJRYyWSM6fMtYxkEyJ6okGvJWEF2TCV11flre9gPvsf fe1Kvfh/cWkOvwgci1ZI7MQwDkjsy4WlJ+I2D/QWXXTAnhkiAuv1vtPNubrId4IMSbe7UXE5w++ x4QQr/1vM1KPBcAuYHagwsK4gjZFuPKQ= X-Gm-Gg: AeBDievJXI9b5HULZquCu86LL9HBp4qXn/Msqx/kBt//G34MtV9UI6wFT2aqBmcO+MX WAEAyR5poy8oAeThx8EnYxs7IaH4wQm3zkp1hrXZgT4/OQHr8c9+JAaXz+uSG9TSnQSNfGWFfgA 9S5oFPY6i7H+SXwCeZdJgk+Dwjl7SesRwqg9oQAawA9ch3jF/jKfnU58uXtrcpRXjECMPrWiFZA aOctTUhs1gVbKDa64UQOzJIC/eakHbkGsSKbR7RQanXnBBaiGm7iF8mP0rfHy6FqiGE/OYB78ei TxILUKHCB0WYkIyUFUvdPlanZZ/corSLjzO6yI7S/sReavrShR3mhUca5lca4Duq8DkU0Mpkp87 69W9o05g7/7/32LeA X-Received: by 2002:a4a:ec42:0:b0:67e:1887:34b4 with SMTP id 006d021491bc7-69462f36e50mr8570047eaf.58.1776773591433; Tue, 21 Apr 2026 05:13:11 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Tue, 21 Apr 2026 15:12:58 +0300 X-Gm-Features: AQROBzBsyTKx3PCgrgQcQbiR4M6BkqNGe1YAOeQE_Orv0ObhTqMCptgUb62cHOA Message-ID: Subject: Re: Incorrect checksum in control file with pg_rewind test To: "Maksim.Melnikov" Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000c3a41a064ff75677" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c3a41a064ff75677 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Maksim! On Fri, Nov 7, 2025 at 5:19=E2=80=AFPM Maksim.Melnikov wrote: > just to clarify, it isn't pg_rewind related issue and can fire > spontaneously. > I don't have any strong scenario how to reproduce it, tests sometimes > fired on our local CI, but as you can see on thread [1], > where the same issue for frontends was discussed, it is very hard to > reproduce and there wasn't scenario how to do it too. > > Some dirty hacks to reproduce it was described here [2], and I've tried > it on master branch: > First of all I applied patch > 0001-XXX-Dirty-hack-to-clobber-control-file-for-testing.patch from [2], > then compile app with > -DEXEC_BACKEND and exec command in psql > do $$ begin loop perform pg_update_control_file(); end loop; end; $$; > Also I've run pgbench command > for run in {1..5000}; do pgbench -c50 -t100 -j6 -S postgres ; done > And eventually got error > > 2025-11-07 17:58:33.139 MSK [2472504] FATAL: incorrect checksum in > control file > 2025-11-07 17:58:33.141 MSK [2472501] LOG: could not receive data from > client: Connection reset by peer > 2025-11-07 17:58:33.143 MSK [2472505] LOG: could not send data to > client: Broken pipe > 2025-11-07 17:58:33.143 MSK [2472505] FATAL: connection to client lost Thank you for spotting this issue and proposing a patch. The fork builds don't have this problem, because fork replicated contents of LocalControlFile to the new process. And the postmaster has consistent snapshot of control file as there is no concurrent process which could write it and that moment. But EXEC_BACKEND, even with your patch, may end up different processes with different contents of LocalControlFile. I don't see it could cause a material bug right now, but I see this as undesirable divergence between fork and EXEC_BACKEND behaviors. I propose an alternative approach copy the contents of control file to the new process via BackendParameters. This approach solves two problems at once: no torn reads, and no divergence between fork and EXEC_BACKEND. ------ Regards, Alexander Korotkov Supabase --000000000000c3a41a064ff75677 Content-Type: application/octet-stream; name="v1-0001-Inherit-pg_control-snapshot-into-EXEC_BACKEND-sub.patch" Content-Disposition: attachment; filename="v1-0001-Inherit-pg_control-snapshot-into-EXEC_BACKEND-sub.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo8kpf5m0 RnJvbSA3OGE1YTZhOTc3MzUyYjJkNmRlOTg1MTI5OWRiN2UzY2E0NzA4MGNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVHVlLCAyMSBBcHIgMjAyNiAxNDo1NTo0OCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjFdIEluaGVyaXQgcGdfY29udHJvbCBzbmFwc2hvdCBpbnRvIEVYRUNfQkFDS0VORAog c3ViLXByb2Nlc3NlcwoKVW5kZXIgRVhFQ19CQUNLRU5ELCBlYWNoIHN1Yi1wcm9jZXNzIHJlLXJl YWRzIHBnX2NvbnRyb2wgZnJvbSBkaXNrIGluClN1YlBvc3RtYXN0ZXJNYWluKCkgdmlhIExvY2Fs UHJvY2Vzc0NvbnRyb2xGaWxlKCkuICBUaGF0IHJlYWQgaXMgbm90CnNlcmlhbGl6ZWQgYWdhaW5z dCB1cGRhdGVfY29udHJvbGZpbGUoKSwgd2hpY2ggd3JpdGVzIHRoZSBmaWxlCm5vbi1hdG9taWNh bGx5IGluIHRoZSBzdGFydHVwIHByb2Nlc3Mgb3IgaW4gdGhlIGNoZWNrcG9pbnRlci4gIFRoZQpz dWItcHJvY2VzcyBjYW4gdGhlcmVmb3JlIG9ic2VydmUgYSB0b3JuIGltYWdlIGFuZCBmYWlsIHRo ZSBDUkMgY2hlY2suCgpBbHNvIGRpZmZlcmVudCBzdWItcHJvY2Vzc2VzIGNhbiBlbmQgdXAgd2l0 aCBkaWZmZXJlbnQgdmVyc2lvbnMgb2YKTG9jYWxDb250cm9sRmlsZS4gIEl0IGRvZXNuJ3Qgc2Vl bXMgdG8gY2F1c2UgbWF0ZXJpYWwgYnVnIHlldCwgYnV0IGl0IHdvdWxkCmJlIGJldHRlciB0byBz dGljayBmb3JrIGFuZCBFWEVDX0JBQ0tFTkQgYnVpbGRzIHRvIHRoZSBzYW1lIGJlaGF2aW9yLgoK VGhpcyBjb21taXQgcmVwcm9kdWNlcyBmb3JrIGJlaGF2aW9yIG9uICBFWEVDX0JBQ0tFTkQgYnkg cGFzc2luZwp0aGUgcG9zdG1hc3RlcidzIExvY2FsQ29udHJvbEZpbGUgY29weSB0aHJvdWdoIEJh Y2tlbmRQYXJhbWV0ZXJzIGFuZApoYXZpbmcgdGhlIHN1Yi1wcm9jZXNzIGNvbnN1bWUgdGhhdCBz bmFwc2hvdCBpbnN0ZWFkIG9mIHJlLXJlYWRpbmcKZnJvbSBkaXNrLgoKTm93LCBMb2NhbFByb2Nl c3NDb250cm9sRmlsZSgpIGhhdmUgYSBuZXcgYW4gb3B0aW9uYWwgJ3NvdXJjZScgYXJndW1lbnQ6 CndoZW4gTlVMTCBpdCByZWFkcyBmcm9tIHRoZSBkaXNrIGFzIGJlZm9yZTsgd2hlbiBub24tTlVM TCBpdCBpbnN0YWxscyB0aGUKcHJvdmlkZWQgc25hcHNob3QgYW5kIHJ1bnMgdGhlIHNhbWUgQ1JD LCBjb21wYXRpYmlsaXR5LCBhbmQgR1VDCnNldHVwIHN0ZXBzLiAgR2V0TG9jYWxDb250cm9sRmls ZUNvcHkoKSBpcyBhIHNtYWxsIGFjY2Vzc29yIHRoYXQKY29waWVzIG91dCB0aGUgcG9zdG1hc3Rl cidzIExvY2FsQ29udHJvbEZpbGUsIHNvIGxhdW5jaF9iYWNrZW5kLmMKZG9lcyBub3QgcmVhY2gg aW50byB4bG9nLmMgZ2xvYmFscyBkaXJlY3RseS4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZjU5MzM1YTQtODNmZi00MzhhLWEzMGUtN2NmMjIwMDI3 NmI2JTQwcG9zdGdyZXNwcm8ucnUKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgICAgICAgfCA4OSArKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgfCAzMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCAgICAgICAg ICAgICAgIHwgIDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMzYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGY4NWI1Mjg2MDg2Li5m YTk1M2Y1YTQzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzI0LDcgKzcyNCw3 IEBAIHN0YXRpYyB2b2lkIFVwZGF0ZU1pblJlY292ZXJ5UG9pbnQoWExvZ1JlY1B0ciBsc24sIGJv b2wgZm9yY2UpOwogc3RhdGljIGJvb2wgUGVyZm9ybVJlY292ZXJ5WExvZ0FjdGlvbih2b2lkKTsK IHN0YXRpYyB2b2lkIEluaXRDb250cm9sRmlsZSh1aW50NjQgc3lzaWRlbnRpZmllciwgdWludDMy IGRhdGFfY2hlY2tzdW1fdmVyc2lvbik7CiBzdGF0aWMgdm9pZCBXcml0ZUNvbnRyb2xGaWxlKHZv aWQpOwotc3RhdGljIHZvaWQgUmVhZENvbnRyb2xGaWxlKHZvaWQpOworc3RhdGljIHZvaWQgUmVh ZENvbnRyb2xGaWxlKENvbnRyb2xGaWxlRGF0YSAqc291cmNlKTsKIHN0YXRpYyB2b2lkIFVwZGF0 ZUNvbnRyb2xGaWxlKHZvaWQpOwogc3RhdGljIGNoYXIgKnN0cl90aW1lKHBnX3RpbWVfdCB0bm93 LCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKIApAQCAtNDQwNyw0MiArNDQwNyw1NiBAQCBX cml0ZUNvbnRyb2xGaWxlKHZvaWQpCiB9CiAKIHN0YXRpYyB2b2lkCi1SZWFkQ29udHJvbEZpbGUo dm9pZCkKK1JlYWRDb250cm9sRmlsZShDb250cm9sRmlsZURhdGEgKnNvdXJjZSkKIHsKIAlwZ19j cmMzMmMJY3JjOwotCWludAkJCWZkOwogCWNoYXIJCXdhbF9zZWdzel9zdHJbMjBdOwotCWludAkJ CXI7CiAKIAkvKgotCSAqIFJlYWQgZGF0YS4uLgorCSAqIElmIGEgc291cmNlIHNuYXBzaG90IHdh cyBwcm92aWRlZCwgdXNlIGl0IGluc3RlYWQgb2YgcmVhZGluZyBmcm9tIGRpc2suCisJICogVGhp cyBwYXRoIGlzIHVzZWQgdW5kZXIgRVhFQ19CQUNLRU5EIHRvIGluaGVyaXQgcGdfY29udHJvbCBm cm9tIHRoZQorCSAqIHBvc3RtYXN0ZXIgdmlhIEJhY2tlbmRQYXJhbWV0ZXJzLCBtYXRjaGluZyBm b3JrIHNlbWFudGljcyBhbmQgYXZvaWRpbmcKKwkgKiB0b3JuIHJlYWRzIG9mIHRoZSBvbi1kaXNr IGZpbGUuCiAJICovCi0JZmQgPSBCYXNpY09wZW5GaWxlKFhMT0dfQ09OVFJPTF9GSUxFLAotCQkJ CQkgICBPX1JEV1IgfCBQR19CSU5BUlkpOwotCWlmIChmZCA8IDApCi0JCWVyZXBvcnQoUEFOSUMs Ci0JCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCVhMT0dfQ09OVFJPTF9GSUxFKSkpOwotCi0J cGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfQ09OVFJPTF9GSUxFX1JFQUQpOwot CXIgPSByZWFkKGZkLCBDb250cm9sRmlsZSwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOwotCWlm IChyICE9IHNpemVvZihDb250cm9sRmlsZURhdGEpKQorCWlmIChzb3VyY2UpCisJeworCQltZW1j cHkoQ29udHJvbEZpbGUsIHNvdXJjZSwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCX0KKwll bHNlCiAJewotCQlpZiAociA8IDApCisJCWludAkJCWZkOworCQlpbnQJCQlyOworCisJCS8qCisJ CSAqIFJlYWQgZGF0YS4uLgorCQkgKi8KKwkJZmQgPSBCYXNpY09wZW5GaWxlKFhMT0dfQ09OVFJP TF9GSUxFLAorCQkJCQkJICAgT19SRFdSIHwgUEdfQklOQVJZKTsKKwkJaWYgKGZkIDwgMCkKIAkJ CWVyZXBvcnQoUEFOSUMsCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCQkg ZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgZXJybXNnKCJj b3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCVhMT0dfQ09OVFJPTF9GSUxF KSkpOwotCQllbHNlCi0JCQllcmVwb3J0KFBBTklDLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFfQ09SUlVQVEVEKSwKLQkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6 IHJlYWQgJWQgb2YgJXp1IiwKLQkJCQkJCQlYTE9HX0NPTlRST0xfRklMRSwgciwgc2l6ZW9mKENv bnRyb2xGaWxlRGF0YSkpKSk7Ci0JfQotCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAotCWNs b3NlKGZkKTsKKwkJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfQ09OVFJPTF9G SUxFX1JFQUQpOworCQlyID0gcmVhZChmZCwgQ29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmls ZURhdGEpKTsKKwkJaWYgKHIgIT0gc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpCisJCXsKKwkJCWlm IChyIDwgMCkKKwkJCQllcmVwb3J0KFBBTklDLAorCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNj ZXNzKCksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAor CQkJCQkJCQlYTE9HX0NPTlRST0xfRklMRSkpKTsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KFBBTklD LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJCQkgZXJybXNn KCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogcmVhZCAlZCBvZiAlenUiLAorCQkJCQkJCQlY TE9HX0NPTlRST0xfRklMRSwgciwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpKSk7CisJCX0KKwkJ cGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOworCisJCWNsb3NlKGZkKTsKKwl9CiAKIAkvKgogCSAq IENoZWNrIGZvciBleHBlY3RlZCBwZ19jb250cm9sIGZvcm1hdCB2ZXJzaW9uLiAgSWYgdGhpcyBp cyB3cm9uZywgdGhlCkBAIC00NjQwLDYgKzQ2NTQsMTkgQEAgVXBkYXRlQ29udHJvbEZpbGUodm9p ZCkKIAl1cGRhdGVfY29udHJvbGZpbGUoRGF0YURpciwgQ29udHJvbEZpbGUsIHRydWUpOwogfQog CisvKgorICogQ29weSB0aGUgcG9zdG1hc3RlcidzIHByb2Nlc3MtbG9jYWwgcGdfY29udHJvbCBp bWFnZSBpbnRvICpkZXN0LiAgVGhpcyBpcworICogdGhlIHNhbWUgaW4tbWVtb3J5IGNvcHkgdGhh dCBhIGZvcmtlZCBiYWNrZW5kIGluaGVyaXRzIGluIGl0cyBhZGRyZXNzCisgKiBzcGFjZSwgYW5k IGl0IGlzIHVzZWQgdW5kZXIgRVhFQ19CQUNLRU5EIHRvIGhhbmQgdGhlIGltYWdlIHRvIHN1Yi1w cm9jZXNzZXMKKyAqIHZpYSBCYWNrZW5kUGFyYW1ldGVycyBpbnN0ZWFkIG9mIGhhdmluZyB0aGVt IHJlLXJlYWQgcGdfY29udHJvbCBmcm9tIGRpc2suCisgKi8KK3ZvaWQKK0dldExvY2FsQ29udHJv bEZpbGVDb3B5KENvbnRyb2xGaWxlRGF0YSAqZGVzdCkKK3sKKwlBc3NlcnQoTG9jYWxDb250cm9s RmlsZSAhPSBOVUxMKTsKKwltZW1jcHkoZGVzdCwgTG9jYWxDb250cm9sRmlsZSwgc2l6ZW9mKENv bnRyb2xGaWxlRGF0YSkpOworfQorCiAvKgogICogUmV0dXJucyB0aGUgdW5pcXVlIHN5c3RlbSBp ZGVudGlmaWVyIGZyb20gY29udHJvbCBmaWxlLgogICovCkBAIC01MjY0LDE0ICs1MjkxLDE4IEBA IHNob3dfZWZmZWN0aXZlX3dhbF9sZXZlbCh2b2lkKQogICoKICAqIHJlc2V0IGp1c3QgY29udHJv bHMgd2hldGhlciBwcmV2aW91cyBjb250ZW50cyBhcmUgdG8gYmUgZXhwZWN0ZWQgKGluIHRoZQog ICogcmVzZXQgY2FzZSwgdGhlcmUncyBhIGRhbmdsaW5nIHBvaW50ZXIgaW50byBvbGQgc2hhcmVk IG1lbW9yeSksIG9yIG5vdC4KKyAqCisgKiBJZiBzb3VyY2UgaXMgbm9uLU5VTEwsIGl0cyBjb250 ZW50cyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSBkaXNrLgorICogVGhpcyBzdXBw b3J0cyBFWEVDX0JBQ0tFTkQgc3ViLXByb2Nlc3NlcyB0aGF0IGluaGVyaXQgcGdfY29udHJvbCBm cm9tIHRoZQorICogcG9zdG1hc3RlciB2aWEgQmFja2VuZFBhcmFtZXRlcnMuCiAgKi8KIHZvaWQK LUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCitMb2NhbFByb2Nlc3NDb250cm9s RmlsZShib29sIHJlc2V0LCBzdHJ1Y3QgQ29udHJvbEZpbGVEYXRhICpzb3VyY2UpCiB7CiAJQXNz ZXJ0KHJlc2V0IHx8IENvbnRyb2xGaWxlID09IE5VTEwpOwogCUxvY2FsQ29udHJvbEZpbGUgPSBw YWxsb2Nfb2JqZWN0KENvbnRyb2xGaWxlRGF0YSk7CiAJQ29udHJvbEZpbGUgPSBMb2NhbENvbnRy b2xGaWxlOwotCVJlYWRDb250cm9sRmlsZSgpOworCVJlYWRDb250cm9sRmlsZShzb3VyY2UpOwog CVNldExvY2FsRGF0YUNoZWNrc3VtU3RhdGUoQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVy c2lvbik7CiB9CiAKQEAgLTU2MTEsNyArNTY0Miw3IEBAIEJvb3RTdHJhcFhMT0codWludDMyIGRh dGFfY2hlY2tzdW1fdmVyc2lvbikKIAkgKiBGb3JjZSBjb250cm9sIGZpbGUgdG8gYmUgcmVhZCAt IGluIGNvbnRyYXN0IHRvIG5vcm1hbCBwcm9jZXNzaW5nIHdlJ2QKIAkgKiBvdGhlcndpc2UgbmV2 ZXIgcnVuIHRoZSBjaGVja3MgYW5kIEdVQyByZWxhdGVkIGluaXRpYWxpemF0aW9ucyB0aGVyZWlu LgogCSAqLwotCVJlYWRDb250cm9sRmlsZSgpOworCVJlYWRDb250cm9sRmlsZShOVUxMKTsKIH0K IAogc3RhdGljIGNoYXIgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVu Y2hfYmFja2VuZC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCmlu ZGV4IDhmM2NmZWE4ODBjLi43NWM2ODUzZGVjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1 bmNoX2JhY2tlbmQuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKICNpZmRlZiBFWEVDX0JBQ0tFTkQKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wu aCIKICNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5 L2luc3RyX3RpbWUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCkBAIC0xNDEsNiAr MTQyLDEzIEBAIHR5cGVkZWYgc3RydWN0CiAJQ2xpZW50U29ja2V0IGNsaWVudF9zb2NrOwogCUlu aGVyaXRhYmxlU29ja2V0IGluaF9zb2NrOwogCisJLyoKKwkgKiBTbmFwc2hvdCBvZiBwZ19jb250 cm9sIHRha2VuIGJ5IHRoZSBwb3N0bWFzdGVyLiAgSW5oZXJpdGVkIGJ5IHRoZQorCSAqIHN1Yi1w cm9jZXNzIGluIHBsYWNlIG9mIHJlLXJlYWRpbmcgdGhlIGZpbGUgZnJvbSBkaXNrLCB0byBhdm9p ZCB0b3JuCisJICogcmVhZHMgYW5kIHRvIG1hdGNoIGZvcmsoKSBpbmhlcml0YW5jZSBzZW1hbnRp Y3MuCisJICovCisJQ29udHJvbEZpbGVEYXRhIENvbnRyb2xGaWxlOworCiAJLyoKIAkgKiBFeHRy YSBzdGFydHVwIGRhdGEsIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgY2hpbGQgcHJvY2Vzcy4KIAkg Ki8KQEAgLTE1MCw2ICsxNTgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogI2RlZmluZSBTaXplT2ZC YWNrZW5kUGFyYW1ldGVycyhzdGFydHVwX2RhdGFfbGVuKSAob2Zmc2V0b2YoQmFja2VuZFBhcmFt ZXRlcnMsIHN0YXJ0dXBfZGF0YSkgKyBzdGFydHVwX2RhdGFfbGVuKQogCisvKgorICogU25hcHNo b3Qgb2YgcGdfY29udHJvbCBpbmhlcml0ZWQgZnJvbSB0aGUgcG9zdG1hc3Rlci4gIFBvcHVsYXRl ZCBmcm9tCisgKiBCYWNrZW5kUGFyYW1ldGVycyBpbiByZXN0b3JlX2JhY2tlbmRfdmFyaWFibGVz KCkgYW5kIHRoZW4gY29uc3VtZWQgYnkgdGhlCisgKiBjYWxsIHRvIExvY2FsUHJvY2Vzc0NvbnRy b2xGaWxlKCkgaW4gU3ViUG9zdG1hc3Rlck1haW4oKS4KKyAqLworc3RhdGljIENvbnRyb2xGaWxl RGF0YSBJbmhlcml0ZWRDb250cm9sRmlsZTsKKwogc3RhdGljIHZvaWQgcmVhZF9iYWNrZW5kX3Zh cmlhYmxlcyhjaGFyICppZCwgdm9pZCAqKnN0YXJ0dXBfZGF0YSwgc2l6ZV90ICpzdGFydHVwX2Rh dGFfbGVuKTsKIHN0YXRpYyB2b2lkIHJlc3RvcmVfYmFja2VuZF92YXJpYWJsZXMoQmFja2VuZFBh cmFtZXRlcnMgKnBhcmFtKTsKIApAQCAtNjYyLDEwICs2NzcsMTEgQEAgU3ViUG9zdG1hc3Rlck1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljaGVja0RhdGFEaXIoKTsKIAogCS8qCi0JICog KHJlLSlyZWFkIGNvbnRyb2wgZmlsZSwgYXMgaXQgY29udGFpbnMgY29uZmlnLiBUaGUgcG9zdG1h c3RlciB3aWxsCi0JICogYWxyZWFkeSBoYXZlIHJlYWQgdGhpcywgYnV0IHRoaXMgcHJvY2VzcyBk b2Vzbid0IGtub3cgYWJvdXQgdGhhdC4KKwkgKiBTZXQgdXAgY29udHJvbCBmaWxlIGZyb20gdGhl IHNuYXBzaG90IHRoZSBwb3N0bWFzdGVyIGNhcHR1cmVkIGZvciB1cy4KKwkgKiBSZWFkaW5nIHBn X2NvbnRyb2wgZnJvbSBkaXNrIGhlcmUgd291bGQgcmFjZSB3aXRoIGNvbmN1cnJlbnQgdXBkYXRl cworCSAqIGZyb20gdGhlIHN0YXJ0dXAgcHJvY2VzcyBvciBjaGVja3BvaW50ZXIuCiAJICovCi0J TG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoZmFsc2UpOworCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxl KGZhbHNlLCAmSW5oZXJpdGVkQ29udHJvbEZpbGUpOwogCiAJUmVnaXN0ZXJCdWlsdGluU2htZW1D YWxsYmFja3MoKTsKIApAQCAtNzcyLDYgKzc4OCwxNCBAQCBzYXZlX2JhY2tlbmRfdmFyaWFibGVz KEJhY2tlbmRQYXJhbWV0ZXJzICpwYXJhbSwKIAogCXN0cmxjcHkocGFyYW0tPnBrZ2xpYl9wYXRo LCBwa2dsaWJfcGF0aCwgTUFYUEdQQVRIKTsKIAorCS8qCisJICogSGFuZCB0aGUgcG9zdG1hc3Rl cidzIHByb2Nlc3MtbG9jYWwgcGdfY29udHJvbCBpbWFnZSB0byB0aGUKKwkgKiBzdWItcHJvY2Vz cy4gIFRoaXMgbWlycm9ycyB3aGF0IGZvcmsoKSBpbmhlcml0YW5jZSBkb2VzIG9uIHBsYXRmb3Jt cworCSAqIHdpdGhvdXQgRVhFQ19CQUNLRU5ELCBhbmQgaXQgYXZvaWRzIHJlLXJlYWRpbmcgcGdf Y29udHJvbCBmcm9tIGRpc2sKKwkgKiBjb25jdXJyZW50bHkgd2l0aCB0aGUgc3RhcnR1cCBwcm9j ZXNzIG9yIGNoZWNrcG9pbnRlciB1cGRhdGluZyBpdC4KKwkgKi8KKwlHZXRMb2NhbENvbnRyb2xG aWxlQ29weSgmcGFyYW0tPkNvbnRyb2xGaWxlKTsKKwogCXBhcmFtLT5zdGFydHVwX2RhdGFfbGVu ID0gc3RhcnR1cF9kYXRhX2xlbjsKIAlpZiAoc3RhcnR1cF9kYXRhX2xlbiA+IDApCiAJCW1lbWNw eShwYXJhbS0+c3RhcnR1cF9kYXRhLCBzdGFydHVwX2RhdGEsIHN0YXJ0dXBfZGF0YV9sZW4pOwpA QCAtMTAyOSw2ICsxMDUzLDggQEAgcmVzdG9yZV9iYWNrZW5kX3ZhcmlhYmxlcyhCYWNrZW5kUGFy YW1ldGVycyAqcGFyYW0pCiAKIAlzdHJsY3B5KHBrZ2xpYl9wYXRoLCBwYXJhbS0+cGtnbGliX3Bh dGgsIE1BWFBHUEFUSCk7CiAKKwltZW1jcHkoJkluaGVyaXRlZENvbnRyb2xGaWxlLCAmcGFyYW0t PkNvbnRyb2xGaWxlLCBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSk7CisKIAkvKgogCSAqIFdlIG5l ZWQgdG8gcmVzdG9yZSBmZC5jJ3MgY291bnRzIG9mIGV4dGVybmFsbHktb3BlbmVkIEZEczsgdG8g YXZvaWQKIAkgKiBjb25mdXNpb24sIGJlIHN1cmUgdG8gZG8gdGhpcyBhZnRlciByZXN0b3Jpbmcg bWF4X3NhZmVfZmRzLiAgKE5vdGU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4 IGI2ZmQzMzJmMTk2Li45YzkyYWMwOWJkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKQEAgLTkxNiw3ICs5MTYsNyBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCSAqIHByb2Nlc3NlcyB3aWxsIGluaGVyaXQgdGhlIGNvcnJlY3QgZnVuY3Rpb24gcG9p bnRlciBhbmQgbm90IG5lZWQgdG8KIAkgKiByZXBlYXQgdGhlIHRlc3QuCiAJICovCi0JTG9jYWxQ cm9jZXNzQ29udHJvbEZpbGUoZmFsc2UpOworCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGZhbHNl LCBOVUxMKTsKIAogCS8qCiAJICogUmVnaXN0ZXIgdGhlIGFwcGx5IGxhdW5jaGVyLiAgSXQncyBw cm9iYWJseSBhIGdvb2QgaWRlYSB0byBjYWxsIHRoaXMKQEAgLTMyNjUsNyArMzI2NSw3IEBAIFBv c3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJc2htZW1fZXhpdCgxKTsKIAogCQkvKiByZS1y ZWFkIGNvbnRyb2wgZmlsZSBpbnRvIGxvY2FsIG1lbW9yeSAqLwotCQlMb2NhbFByb2Nlc3NDb250 cm9sRmlsZSh0cnVlKTsKKwkJTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUodHJ1ZSwgTlVMTCk7CiAK IAkJLyoKIAkJICogUmUtaW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGFuZCBzZW1hcGhvcmVzLiAg Tm90ZTogV2UgZG9uJ3QgY2FsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDJjMWYxNGI3ODg5Li5hMzVk OTk2NDllNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNDE3NSw3ICs0MTc1LDcgQEAgUG9zdGdyZXNT aW5nbGVVc2VyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCUNyZWF0ZURhdGFEaXJMb2Nr RmlsZShmYWxzZSk7CiAKIAkvKiByZWFkIGNvbnRyb2wgZmlsZSAoZXJyb3IgY2hlY2tpbmcgYW5k IGNvbnRhaW5zIGNvbmZpZyApICovCi0JTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoZmFsc2UpOwor CUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGZhbHNlLCBOVUxMKTsKIAogCS8qIFJlZ2lzdGVyIHRo ZSBzaGFyZWQgbWVtb3J5IG5lZWRzIG9mIGFsbCBjb3JlIHN1YnN5c3RlbXMuICovCiAJUmVnaXN0 ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IDQzN2I0ZjMyMzQ5Li5h YWI2MzhlNmExMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yNjEsNyArMjYxLDkgQEAgZXh0ZXJuIGJvb2wg R2V0RGVmYXVsdENoYXJTaWduZWRuZXNzKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0RmFr ZUxTTkZvclVubG9nZ2VkUmVsKHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh1aW50 MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVXYWxDb25z aXN0ZW5jeUNoZWNraW5nKHZvaWQpOwotZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJvbEZp bGUoYm9vbCByZXNldCk7CitzdHJ1Y3QgQ29udHJvbEZpbGVEYXRhOworZXh0ZXJuIHZvaWQgTG9j YWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCwgc3RydWN0IENvbnRyb2xGaWxlRGF0YSAq c291cmNlKTsKK2V4dGVybiB2b2lkIEdldExvY2FsQ29udHJvbEZpbGVDb3B5KHN0cnVjdCBDb250 cm9sRmlsZURhdGEgKmRlc3QpOwogZXh0ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdhbExldmVsT25T dGFuZGJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9p ZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERhdHVtIGFyZyk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdp dC0xNTQpCgo= --000000000000c3a41a064ff75677--