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 1wI4G0-007lDr-2D for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Apr 2026 12:43:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wI4Fz-003WUy-1x for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Apr 2026 12:43:11 +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 1wI4Fz-003WUq-0F for pgsql-hackers@lists.postgresql.org; Wed, 29 Apr 2026 12:43:11 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wI4Fw-00000003LXW-1voJ for pgsql-hackers@lists.postgresql.org; Wed, 29 Apr 2026 12:43:10 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-488ab2db91aso176764315e9.3 for ; Wed, 29 Apr 2026 05:43:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777466586; x=1778071386; darn=lists.postgresql.org; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=GfGIkCShfqRVl29Sf5Q3cMiDENbeSlSyiQCSerChMwk=; b=SWdOm7hH7AnOlrOnILYedzW0BVx7PLPAwGowwgQFb/Nu1vW3rrHNZrMUu3EqQDCqmk mzGQ+dI4lBn56Rffm9KoN2bZY05Tz1P88raGNWstMAa0ZleOwTvehSy8gm7wJyn17Mgq ONdo5S8phNMkFjdZ45Chy4plTI5xwpEIewwyNsk1yeZy6Q7CZQEYDVpPEPyVRrmNtiYL FlOsWUMQq3RifP4xIdGKugvJuvkhgTmLyQG4MnZxdbgfp+f2ZJwwGrnh+bylVP2ZZtpq r9O8jZvRa7G87HuH4PDXCFwtCcT2wIkLCEF6+OQUoghNhZZwB74tX2kRd+NfycMlX0h5 dxPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777466586; x=1778071386; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=GfGIkCShfqRVl29Sf5Q3cMiDENbeSlSyiQCSerChMwk=; b=IwQnXetVaBg71temNR5RkIKV2W3kNHJGr+4YFOx97oSHhDSpCo69YSK4FUqHP+GDUQ 0xl34uTWnLs0T+Tr74je4scCpIVqwHuODLogoF7j1Q3nTmYad9ebwg4rcMd04wWzOZiJ XwwAAgXzBF5KF6NjmHqyKN9hoT5gaqjAGoIWrME8wAmYk1ns/BO26qSeXyMXe7Ut28Gt SKGn4TOM1UaMxw84KdveSuZcxyMNpUIWXf9rgQGqYhDQsRBdM1i9rTVS0KgZHcVxVpAf 0SB2MXHuaDzqoyAV/cAs5sX/Y8sEZuwAtI21sEJg6JqFYLzfSaEO+AoDPm854FYDfJBk Bllw== X-Gm-Message-State: AOJu0YySyKJtoUroFyAKfoMcC2Ucz1I9WcnKWkK5GedzuIrBEqtFku+b AyWEXqDDIh4p01W3OJka09H5NPw/6aj8slkaJnLmIG1M6f6l9HCjd9Nd X-Gm-Gg: AeBDievmybVBg7B0fKhgD87+a1PBee7BELs7bjXfT8KSxJswDFU9oI5FZPJLEplLpBR FAmwYhjKn80yNpZb5W9syDF3BQ4+LsQBa8rILt2yaNBBKtLvhVWa0dG5TS/wJ0ANEtEvAYgd1Wh Fhgb2fVau/U6RwI7EkyxrKDi3ORNLEv12cy9hAcq73vbuQ5DuJfbQ7Gh+sq6Ulc/wnOQ6kpDowj dazxDPsr+oyT33VwODRqNJsjg9wZCNJUuB4RS1O2swbDQ+K/YhflS22Fd0KMs6Y2DtDL4KTMGd2 MC8aXFxz52Cie6v6Er0EGEeKu/9KABmxXs/+RKb46uvWi70qDJHp9BjC3SduPA7E/GNMBtZOPSE 2VHD3KSXqLgIfHGyRHeB+7GKsv3hk44myjfDa4GkSlQX/mPzEcrhwzBWKXLXOYoEsz6QLekZ+70 bLsm3RTqQ8C2EUzgWouu0ZNDA3zDI+jk5zTvgAQThHgxgRVWjKTQ4gFBXFIo8= X-Received: by 2002:a05:600c:c101:b0:48a:5970:2005 with SMTP id 5b1f17b1804b1-48a7b50e83cmr48547745e9.2.1777466586001; Wed, 29 Apr 2026 05:43:06 -0700 (PDT) Received: from [192.168.15.251] ([80.251.191.198]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a7c5d2919sm51263815e9.15.2026.04.29.05.43.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 Apr 2026 05:43:03 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------v01FXtYKE62r80dadlzMtkEL" Message-ID: <6f6fa20f-1019-4bf6-ab76-c30c046b0efe@gmail.com> Date: Wed, 29 Apr 2026 14:43:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: A very quick observation of dangling pointers in Postgres pathlists From: Andrei Lepikhov To: David Rowley Cc: PostgreSQL Hackers , Tom Lane References: <20be3d9d-4147-492a-b69c-d69a87a014a9@gmail.com> <61918bfd-dac1-4701-b214-ed3c4e228619@gmail.com> Content-Language: en-US In-Reply-To: <61918bfd-dac1-4701-b214-ed3c4e228619@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------v01FXtYKE62r80dadlzMtkEL Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 27/04/2026 10:19, Andrei Lepikhov wrote: > On 21/04/2026 10:35, David Rowley wrote: >> IMO, we should write a function like copy_path() or reparent_path(), >> which creates a copy of the given Path, or the latter also would copy >> then set the ->parent to the given RelOptInfo. Any time we use a path >> directly from the pathlist of another RelOptInfo, we should reparent >> or copy it. We could add an Assert in add_path() to check the new path >> has the correct parent to help us find the places where we forget to >> do this. > > I've attached the patch so we can keep the discussion going. While playing with random path choices [1], I found additional cases where a path is assigned to two different RelOptInfos. See the attachment for a modified patch. [1] https://github.com/danolivo/pg-chaos-test -- regards, Andrei Lepikhov, pgEdge --------------v01FXtYKE62r80dadlzMtkEL Content-Type: text/plain; charset=UTF-8; name="v1-0001-Fix-dangling-Path-pointers-when-sharing-paths-acr.patch" Content-Disposition: attachment; filename*0="v1-0001-Fix-dangling-Path-pointers-when-sharing-paths-acr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMWMzMzUzMTZmYTFhZDA5MDVkNWU5ZjJmMTgyZWZmODI0ZTI0ZmYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjcgQXByIDIwMjYgMDk6NTQ6MTEgKzAyMDAKU3ViamVj dDogW1BBVENIIHYxXSBGaXggZGFuZ2xpbmcgUGF0aCBwb2ludGVycyB3aGVuIHNoYXJpbmcg cGF0aHMgYWNyb3NzCiBSZWxPcHRJbmZvcwoKSW4gdGhyZWUgcGxhY2VzIHRoZSBwbGFubmVy IHJldXNlZCB0aGUgc2FtZSBQYXRoIHBvaW50ZXIgYWNyb3NzIHR3byBSZWxPcHRJbmZvCnBh dGhsaXN0cyB3aXRob3V0IG1ha2luZyBhIGNvcHk6CgotIGNyZWF0ZV9vcmRlcmVkX3BhdGhz KCkgc2V0IHNvcnRlZF9wYXRoID0gaW5wdXRfcGF0aCB3aGVuIHRoZSBwYXRoIHdhcyBhbHJl YWR5CnNvcnRlZCwgcGxhY2luZyB0aGUgc2FtZSBub2RlIGluIGJvdGggaW5wdXRfcmVsLT5w YXRobGlzdCBhbmQKb3JkZXJlZF9yZWwtPnBhdGhsaXN0LgotIGdyb3VwaW5nX3BsYW5uZXIo KSBwYXNzZWQgcGF0aHMgZnJvbSBjdXJyZW50X3JlbCBkaXJlY3RseSBpbnRvIGFkZF9wYXRo IGFuZAphZGRfcGFydGlhbF9wYXRoLgoKU2luY2UgYWRkX3BhdGgoKSBtYXkgcGZyZWUgcGF0 aHMgaXQgZGlzcGxhY2VzLCBhbmQgYXBwbHlfcHJvamVjdGlvbl90b19wYXRoKCkKbWF5IG11 dGF0ZSBhIHBhdGggaW4tcGxhY2UsIGEgcGF0aCBzaGFyZWQgYmV0d2VlbiB0d28gcmVscyBj YW4gYmUgZnJlZWQgb3IKY29ycnVwdGVkIHdoaWxlIHN0aWxsIHJlZmVyZW5jZWQgYnkgdGhl IG90aGVyLgoKSW50cm9kdWNlIGNvcHlfcGF0aCgpLCBhIHR5cGUtYXdhcmUgc2hhbGxvdyBj b3B5IChwYWxsb2MgKyBtZW1jcHkgYXQgdGhlCmNvbmNyZXRlIHN0cnVjdCBzaXplKSwgYW5k IHVzZSBpdCBhdCBhbGwgdGhyZWUgc2l0ZXMgc28gZWFjaCByZWwgb3ducyBhbgppbmRlcGVu ZGVudCB0b3AtbGV2ZWwgbm9kZS4gRm9yIFRfQ3VzdG9tUGF0aCwgZGlzcGF0Y2ggdG8gYSBu ZXcgb3B0aW9uYWwKQ29weUN1c3RvbVBhdGggY2FsbGJhY2sgaW4gQ3VzdG9tUGF0aE1ldGhv ZHM7IGZhbGwgYmFjayB0byBzaXplb2YoQ3VzdG9tUGF0aCkKbWVtY3B5IHdoZW4gdGhlIGNh bGxiYWNrIGlzIG5vdCBwcm92aWRlZC4gRXh0ZW5zaW9ucyBlbWJlZGRpbmcgcHJpdmF0ZQpm aWVsZHMgYmV5b25kIHNpemVvZihDdXN0b21QYXRoKSBzaG91bGQgaW1wbGVtZW50IHRoZSBj YWxsYmFjay4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWRhYjk3NTgtZjM0 Ni00MjYzLTkzYWYtM2UzN2I3YjMxNWI3JTQwZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICB8ICAgNiArLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYyB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrLQog c3JjL2luY2x1ZGUvbm9kZXMvZXh0ZW5zaWJsZS5oICAgICAgICB8ICAgNyArKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5n ZWQsIDE2OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0ZWM3NmNlMzFhOS4uZTkyMGNiYmFhOGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTIyMjYsNyArMjIyNiw3 IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9m cmFjdGlvbiwKIAkJfQogCiAJCS8qIEFuZCBzaG92ZSBpdCBpbnRvIGZpbmFsX3JlbCAqLwot CQlhZGRfcGF0aChmaW5hbF9yZWwsIHBhdGgpOworCQlhZGRfcGF0aChmaW5hbF9yZWwsIGNv cHlfcGF0aChwYXRoKSk7CiAJfQogCiAJLyoKQEAgLTIyNDEsNyArMjI0MSw3IEBAIGdyb3Vw aW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbiwK IAkJewogCQkJUGF0aAkgICAqcGFydGlhbF9wYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsK IAotCQkJYWRkX3BhcnRpYWxfcGF0aChmaW5hbF9yZWwsIHBhcnRpYWxfcGF0aCk7CisJCQlh ZGRfcGFydGlhbF9wYXRoKGZpbmFsX3JlbCwgY29weV9wYXRoKHBhcnRpYWxfcGF0aCkpOwog CQl9CiAJfQogCkBAIC01NDQwLDcgKzU0NDAsNyBAQCBjcmVhdGVfb3JkZXJlZF9wYXRocyhQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCWlucHV0X3BhdGgtPnBhdGhrZXlzLCAm cHJlc29ydGVkX2tleXMpOwogCiAJCWlmIChpc19zb3J0ZWQpCi0JCQlzb3J0ZWRfcGF0aCA9 IGlucHV0X3BhdGg7CisJCQlzb3J0ZWRfcGF0aCA9IGNvcHlfcGF0aChpbnB1dF9wYXRoKTsK IAkJZWxzZQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2Rl LmMKaW5kZXggNzM1MThjOGY4NzAuLjVlYWU3MjRkYjgwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BhdGhub2RlLmMKQEAgLTIzNyw2ICsyMzcsMTYxIEBAIGNvbXBhcmVfcGF0 aF9jb3N0c19mdXp6aWx5KFBhdGggKnBhdGgxLCBQYXRoICpwYXRoMiwgZG91YmxlIGZ1enpf ZmFjdG9yKQogI3VuZGVmIENPTlNJREVSX1BBVEhfU1RBUlRVUF9DT1NUCiB9CiAKKy8qCisg KiBjb3B5X3BhdGgKKyAqCQlNYWtlIGEgc2hhbGxvdyBjb3B5IG9mIGEgUGF0aCBub2RlLgor ICoKKyAqIFRoZSBuZXcgbm9kZSBkZWxpYmVyYXRlbHkgcmV0YWlucyBwYXRoLT5wYXJlbnQu ICBUaGUgcGFyZW50IGZpZWxkIGlzIG5vdCBhbgorICogb3duZXJzaGlwIG1hcmtlciDigJQg aXQgaXMgYSBzdGFibGUgaWRlbnRpdHkgbGluay4gRm9yIGV4YW1wbGUsIGl0IGlzIHVzZWQg aW4KKyAqIGNyZWF0ZXBsYW4uYyB0byBpZGVudGlmeSBiYXNlIHJlbGF0aW9uLgorICoKKyAq IEZvciBUX0N1c3RvbVBhdGgsIHdlIGRpc3BhdGNoIHRvIHRoZSBvcHRpb25hbCBDb3B5Q3Vz dG9tUGF0aCBjYWxsYmFjayBpZgorICogcHJvdmlkZWQ7IG90aGVyd2lzZSB3ZSBmYWxsIGJh Y2sgdG8gYSBzaXplb2YoQ3VzdG9tUGF0aCkgbWVtY3B5LCB3aGljaCBpcworICogY29ycmVj dCBvbmx5IHdoZW4gdGhlIGV4dGVuc2lvbiBoYXNuJ3QgYXBwZW5kZWQgaXRzIG93biBwcml2 YXRlIGZpZWxkcy4KKyAqCisgKiBOb3RlOiB0aGlzIGlzIGludGVudGlvbmFsbHkgc2hhbGxv d2VyIHRoYW4gY29weU9iamVjdCgpICh3aGljaCBkZWVwLWNvcGllcworICogc3VibGlzdHMg YW5kIHN1YnN0cnVjdHVyZSkgYW5kIGxpZ2h0ZXIgdGhhbiByZXBhcmFtZXRlcml6ZV9wYXRo KCkgKHdoaWNoCisgKiByZS1ydW5zIHRoZSBjb25zdHJ1Y3RvciBhbmQgcmUtY29zdHMpLiAg V2UgbmVlZCBvbmx5IGEgZnJlc2ggdG9wLWxldmVsCisgKiBub2RlIHNvIGFkZF9wYXRoKCkn cyBwZnJlZSBhbmQgYXBwbHlfcHJvamVjdGlvbl90b19wYXRoKCkncyBpbi1wbGFjZQorICog bXV0YXRpb24gY2Fubm90IGFmZmVjdCB0aGUgb3JpZ2luYWwuCisgKi8KK1BhdGggKgorY29w eV9wYXRoKFBhdGggKnBhdGgpCit7CisJUGF0aAkgICAqbmV3cGF0aDsKKworCUFzc2VydChw YXRoICE9IE5VTEwpOworCisjZGVmaW5lIEZMQVRfQ09QWV9QQVRIKG5ld25vZGVfLCBub2Rl Xywgbm9kZXR5cGVfKSBcCisJKCAobmV3bm9kZV8pID0gKFBhdGggKikgcGFsbG9jKHNpemVv Zihub2RldHlwZV8pKSwgXAorCSAgbWVtY3B5KChuZXdub2RlXyksIChub2RlXyksIHNpemVv Zihub2RldHlwZV8pKSApCisKKwlzd2l0Y2ggKG5vZGVUYWcocGF0aCkpCisJeworCQljYXNl IFRfUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIFBhdGgpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9JbmRleFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRo LCBwYXRoLCBJbmRleFBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9CaXRtYXBIZWFwUGF0 aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEJpdG1hcEhlYXBQYXRoKTsK KwkJCWJyZWFrOworCQljYXNlIFRfQml0bWFwQW5kUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRI KG5ld3BhdGgsIHBhdGgsIEJpdG1hcEFuZFBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9C aXRtYXBPclBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBCaXRtYXBP clBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9UaWRQYXRoOgorCQkJRkxBVF9DT1BZX1BB VEgobmV3cGF0aCwgcGF0aCwgVGlkUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1RpZFJh bmdlUGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIFRpZFJhbmdlUGF0 aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1N1YnF1ZXJ5U2NhblBhdGg6CisJCQlGTEFUX0NP UFlfUEFUSChuZXdwYXRoLCBwYXRoLCBTdWJxdWVyeVNjYW5QYXRoKTsKKwkJCWJyZWFrOwor CQljYXNlIFRfRm9yZWlnblBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRo LCBGb3JlaWduUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0N1c3RvbVBhdGg6CisJCQl7 CisJCQkJQ3VzdG9tUGF0aCAqY3BhdGggPSAoQ3VzdG9tUGF0aCAqKSBwYXRoOworCisJCQkJ QXNzZXJ0KGNwYXRoLT5tZXRob2RzICE9IE5VTEwpOworCQkJCWlmIChjcGF0aC0+bWV0aG9k cy0+Q29weUN1c3RvbVBhdGgpCisJCQkJCW5ld3BhdGggPSAoUGF0aCAqKSBjcGF0aC0+bWV0 aG9kcy0+Q29weUN1c3RvbVBhdGgoY3BhdGgpOworCQkJCWVsc2UKKwkJCQkJRkxBVF9DT1BZ X1BBVEgobmV3cGF0aCwgcGF0aCwgQ3VzdG9tUGF0aCk7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0FwcGVuZFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBB cHBlbmRQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVyZ2VBcHBlbmRQYXRoOgorCQkJ RkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgTWVyZ2VBcHBlbmRQYXRoKTsKKwkJCWJy ZWFrOworCQljYXNlIFRfR3JvdXBSZXN1bHRQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3 cGF0aCwgcGF0aCwgR3JvdXBSZXN1bHRQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWF0 ZXJpYWxQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgTWF0ZXJpYWxQ YXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVtb2l6ZVBhdGg6CisJCQlGTEFUX0NPUFlf UEFUSChuZXdwYXRoLCBwYXRoLCBNZW1vaXplUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBU X0dhdGhlclBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBHYXRoZXJQ YXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfR2F0aGVyTWVyZ2VQYXRoOgorCQkJRkxBVF9D T1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgR2F0aGVyTWVyZ2VQYXRoKTsKKwkJCWJyZWFrOwor CQljYXNlIFRfTmVzdFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBO ZXN0UGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlUGF0aDoKKwkJCUZMQVRfQ09Q WV9QQVRIKG5ld3BhdGgsIHBhdGgsIE1lcmdlUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBU X0hhc2hQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgSGFzaFBhdGgp OworCQkJYnJlYWs7CisJCWNhc2UgVF9Qcm9qZWN0aW9uUGF0aDoKKwkJCUZMQVRfQ09QWV9Q QVRIKG5ld3BhdGgsIHBhdGgsIFByb2plY3Rpb25QYXRoKTsKKwkJCWJyZWFrOworCQljYXNl IFRfUHJvamVjdFNldFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBQ cm9qZWN0U2V0UGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX1NvcnRQYXRoOgorCQkJRkxB VF9DT1BZX1BBVEgobmV3cGF0aCwgcGF0aCwgU29ydFBhdGgpOworCQkJYnJlYWs7CisJCWNh c2UgVF9JbmNyZW1lbnRhbFNvcnRQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0aCwg cGF0aCwgSW5jcmVtZW50YWxTb3J0UGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX0dyb3Vw UGF0aDoKKwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEdyb3VwUGF0aCk7CisJ CQlicmVhazsKKwkJY2FzZSBUX1VuaXF1ZVBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdw YXRoLCBwYXRoLCBVbmlxdWVQYXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQWdnUGF0aDoK KwkJCUZMQVRfQ09QWV9QQVRIKG5ld3BhdGgsIHBhdGgsIEFnZ1BhdGgpOworCQkJYnJlYWs7 CisJCWNhc2UgVF9Hcm91cGluZ1NldHNQYXRoOgorCQkJRkxBVF9DT1BZX1BBVEgobmV3cGF0 aCwgcGF0aCwgR3JvdXBpbmdTZXRzUGF0aCk7CisJCQlicmVhazsKKwkJY2FzZSBUX01pbk1h eEFnZ1BhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBNaW5NYXhBZ2dQ YXRoKTsKKwkJCWJyZWFrOworCQljYXNlIFRfV2luZG93QWdnUGF0aDoKKwkJCUZMQVRfQ09Q WV9QQVRIKG5ld3BhdGgsIHBhdGgsIFdpbmRvd0FnZ1BhdGgpOworCQkJYnJlYWs7CisJCWNh c2UgVF9TZXRPcFBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBTZXRP cFBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9SZWN1cnNpdmVVbmlvblBhdGg6CisJCQlG TEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBSZWN1cnNpdmVVbmlvblBhdGgpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9Mb2NrUm93c1BhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdw YXRoLCBwYXRoLCBMb2NrUm93c1BhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9Nb2RpZnlU YWJsZVBhdGg6CisJCQlGTEFUX0NPUFlfUEFUSChuZXdwYXRoLCBwYXRoLCBNb2RpZnlUYWJs ZVBhdGgpOworCQkJYnJlYWs7CisJCWNhc2UgVF9MaW1pdFBhdGg6CisJCQlGTEFUX0NPUFlf UEFUSChuZXdwYXRoLCBwYXRoLCBMaW1pdFBhdGgpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIHBhdGggdHlwZTogJWQiLCAoaW50KSBu b2RlVGFnKHBhdGgpKTsKKwkJCW5ld3BhdGggPSBOVUxMOwkJLyoga2VlcCBjb21waWxlciBx dWlldCAqLworCQkJYnJlYWs7CisJfQorCisjdW5kZWYgRkxBVF9DT1BZX1BBVEgKKworCXJl dHVybiBuZXdwYXRoOworfQorCiAvKgogICogc2V0X2NoZWFwZXN0CiAgKgkgIEZpbmQgdGhl IG1pbmltdW0tY29zdCBwYXRocyBmcm9tIGFtb25nIGEgcmVsYXRpb24ncyBwYXRocywKQEAg LTI2NzgsNyArMjgzMyw4IEBAIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgoUGxhbm5lckluZm8g KnJvb3QsCiAgKiBhIHNlcGFyYXRlIFJlc3VsdCBwbGFuIG5vZGUgaXNuJ3QgbmVlZGVkLCB3 ZSBqdXN0IHJlcGxhY2UgdGhlIGdpdmVuIHBhdGgncwogICogcGF0aHRhcmdldCB3aXRoIHRo ZSBkZXNpcmVkIG9uZS4gIFRoaXMgbXVzdCBiZSB1c2VkIG9ubHkgd2hlbiB0aGUgY2FsbGVy CiAgKiBrbm93cyB0aGF0IHRoZSBnaXZlbiBwYXRoIGlzbid0IHJlZmVyZW5jZWQgZWxzZXdo ZXJlIGFuZCBzbyBjYW4gYmUgbW9kaWZpZWQKLSAqIGluLXBsYWNlLgorICogaW4tcGxhY2Uu ICBJbiBwYXJ0aWN1bGFyLCBjYWxsZXJzIG11c3Qgbm90IHBhc3MgYSBQYXRoIHRoYXQgaXMg Y3VycmVudGx5CisgKiByZWFjaGFibGUgZnJvbSBhbm90aGVyIFJlbE9wdEluZm8ncyBwYXRo bGlzdC4KICAqCiAgKiBJZiB0aGUgaW5wdXQgcGF0aCBpcyBhIEdhdGhlclBhdGggb3IgR2F0 aGVyTWVyZ2VQYXRoLCB3ZSB0cnkgdG8gcHVzaCB0aGUKICAqIG5ldyB0YXJnZXQgZG93biB0 byBpdHMgaW5wdXQgYXMgd2VsbDsgdGhpcyBpcyBhIHlldCBtb3JlIGludmFzaXZlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leHRlbnNpYmxlLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9leHRlbnNpYmxlLmgKaW5kZXggNTE3ZGI5NWM0YTMuLjc2MmIwOTk3NmY1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leHRlbnNpYmxlLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXh0ZW5zaWJsZS5oCkBAIC0xMDMsNiArMTAzLDEzIEBAIHR5cGVkZWYgc3Ry dWN0IEN1c3RvbVBhdGhNZXRob2RzCiAJc3RydWN0IExpc3QgKigqUmVwYXJhbWV0ZXJpemVD dXN0b21QYXRoQnlDaGlsZCkgKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJCSBM aXN0ICpjdXN0b21fcHJpdmF0ZSwKIAkJCQkJCQkJCQkJCQkgUmVsT3B0SW5mbyAqY2hpbGRf cmVsKTsKKworCS8qCisJICogUHJvZHVjZSBhIHNoYWxsb3cgY29weSBvZiBhIEN1c3RvbVBh dGgsIHJldHVybmluZyBhIGZyZXNobHkgcGFsbG9jJ2QKKwkgKiBzdHJ1Y3Qgb2YgdGhlIGV4 dGVuc2lvbidzIGNvbmNyZXRlIHR5cGUuICBSZXF1aXJlZCB3aGVuIHRoZSBleHRlbnNpb24n cworCSAqIEN1c3RvbVBhdGggc3ViY2xhc3MgZW1iZWRzIHByaXZhdGUgZmllbGRzIGJleW9u ZCBzaXplb2YoQ3VzdG9tUGF0aCkuCisJICovCisJc3RydWN0IEN1c3RvbVBhdGggKigqQ29w eUN1c3RvbVBhdGgpIChzdHJ1Y3QgQ3VzdG9tUGF0aCAqcGF0aCk7CiB9CQkJQ3VzdG9tUGF0 aE1ldGhvZHM7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IGU4ZGIz MjFmOTJiLi5mYmFmZGZkMWU2ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAg LTU1LDYgKzU1LDcgQEAgZXh0ZXJuIGludAljb21wYXJlX3BhdGhfY29zdHMoUGF0aCAqcGF0 aDEsIFBhdGggKnBhdGgyLAogZXh0ZXJuIGludAljb21wYXJlX2ZyYWN0aW9uYWxfcGF0aF9j b3N0cyhQYXRoICpwYXRoMSwgUGF0aCAqcGF0aDIsCiAJCQkJCQkJCQkJICBkb3VibGUgZnJh Y3Rpb24pOwogZXh0ZXJuIHZvaWQgc2V0X2NoZWFwZXN0KFJlbE9wdEluZm8gKnBhcmVudF9y ZWwpOworZXh0ZXJuIFBhdGggKmNvcHlfcGF0aChQYXRoICpwYXRoKTsKIGV4dGVybiB2b2lk IGFkZF9wYXRoKFJlbE9wdEluZm8gKnBhcmVudF9yZWwsIFBhdGggKm5ld19wYXRoKTsKIGV4 dGVybiBib29sIGFkZF9wYXRoX3ByZWNoZWNrKFJlbE9wdEluZm8gKnBhcmVudF9yZWwsIGlu dCBkaXNhYmxlZF9ub2RlcywKIAkJCQkJCQkgIENvc3Qgc3RhcnR1cF9jb3N0LCBDb3N0IHRv dGFsX2Nvc3QsCi0tIAoyLjU0LjAKCg== --------------v01FXtYKE62r80dadlzMtkEL--