From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 3F800385701E for ; Wed, 18 Aug 2021 15:55:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3F800385701E Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-380-yWQZA1PGN2qw5_sKv6mfog-1; Wed, 18 Aug 2021 11:55:47 -0400 X-MC-Unique: yWQZA1PGN2qw5_sKv6mfog-1 Received: by mail-wm1-f71.google.com with SMTP id h11-20020a05600c350b00b002e6fd28807dso763359wmq.6 for ; Wed, 18 Aug 2021 08:55:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ozEDCi7bvO7p1S1bAxFbaQqvkas2MNeLpVHliR9wgfo=; b=aJg8qOYi6bhSKuVpQ/A0YhF+G8ClQHAdXl8Hs9gNvOw3ERnPjf0LTCLYPlBh22CmXM 3btL4YtP/FuNcPkHMJgTKR3o6y5Uey3M9ILLQY2OACv7uy2L1yqpK9p2MTFGYXVRJCND mObQm8zT4VCiu4SGHIOXQJ1i7sPMWPJIr7my9fiGIdtHaEIR1gS7ubU4CZqyd5hZoMWN J9vLuUTvdBP2qgg4Ge1iNj4iv3ZVgkflddWCe3BhKrjo83DUPnhc6kwgcrkhTeJgW5iq jUMzxxjErvOs/ftEZFATsVua6DCAEuM+RG6dIE+OhRBsyM3mwbJq2MaS5VGNUEU8GT8d Qzag== X-Gm-Message-State: AOAM5314vuQl0G+yMCj0kZjUH5lZAtSAOqmqoMF2CwEnbHauGCVGpdX6 Iux28RT7k/jc+LCJfZaAmDcfz7BO6cul4DxcOZjFibE7l2nLQ+Y8mJquUzC3X3/Qqh1ii1AQ76C 9De2e04wiwie2hUQugCcYfviHt9nIUBk= X-Received: by 2002:a5d:4f02:: with SMTP id c2mr11734566wru.311.1629302146411; Wed, 18 Aug 2021 08:55:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydpAHe9jl2McoxcvyO3vFq0EXfLTaoJnDtXRu8+pbodjRZY1NsQ7E+gseyhmgD3oqpUM7ngEY1Jvf+ZpXLdfQ= X-Received: by 2002:a5d:4f02:: with SMTP id c2mr11734543wru.311.1629302146152; Wed, 18 Aug 2021 08:55:46 -0700 (PDT) MIME-Version: 1.0 References: <20200227130636.GV9441@redhat.com> In-Reply-To: From: Jonathan Wakely Date: Wed, 18 Aug 2021 16:55:35 +0100 Message-ID: Subject: Re: [PATCH] Improvements to valid range checks in debug mode To: Jonathan Wakely Cc: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= , "libstdc++" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000a7762405c9d777be" X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Aug 2021 15:55:51 -0000 --000000000000a7762405c9d777be Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 18 Aug 2021 at 15:40, Jonathan Wakely wrote: > > On Mon, 16 Aug 2021 at 20:26, Jonathan Wakely via Libstdc++ > wrote: > > > > On Fri, 13 Aug 2021 at 18:10, Fran=C3=A7ois Dumont via Libstdc++ > > wrote: > > > > > > I just come back to this email and it sounds like the right moment to > > > commit it. > > > > Ah yes, thanks for the reminder! > > > > I'll push it tomorrow. > > > > > > > > On 27/02/20 2:06 pm, Jonathan Wakely wrote: > > > > These should wait for stage 1 but I'm posting them now for comment. > > > > > > > > With the change to __gnu_debug::__valid_range we now get a debug > > > > assertion for: > > > > > > > > std::string s; > > > > std::min_element(std::string::iterator{}, s.end()); > > > > > > > > where previously it would just crash with undefined behaviour. > > Actually, that change doesn't work. Some of our container iterators > use a value-initialized iterator as the past-the-end value, so the > check in the new __valid_range_aux function incorrectly rejects some > valid ranges. Maybe I can make it work for bidirectional iterators, > which must be attached to a container to be valid. The attached patch is good enough for the original motivation, as shown abo= ve. This makes the debug checks work with basic_string iterators, and for all other container types we already have safe iterators. --000000000000a7762405c9d777be Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kshoero20 Y29tbWl0IGZiMDYxODE0YWE3MjQ3MjdjNTc2MWI1M2U1YTYwMDA3MzU1ZGEyMTAKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBUaHUgRmViIDI3IDEx OjIwOjU0IDIwMjAKCiAgICBsaWJzdGRjKys6IERldGVjdCBudWxsIF9fbm9ybWFsX2l0ZXJhdG9y IGluIHZhbGlkIHJhbmdlIGNoZWNrcwogICAgCiAgICBFbmFobmNlIGRlYnVnIG1vZGUgY2hlY2tz IGZvciB2YWxpZCByYW5nZXMgdG8gZGV0ZWN0IHZhbHVlLWluaXRpYWxpemVkCiAgICBfX25vcm1h bF9pdGVyYXRvciBvYmplY3RzLCBzbyB0aGF0IGJhc2ljX3N0cmluZyBpdGVyYXRvcnMgY2FuIGJl CiAgICBjaGVja2VkLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBXYWtlbHkgPGp3 YWtlbHlAcmVkaGF0LmNvbT4KICAgIAogICAgbGlic3RkYysrLXYzL0NoYW5nZUxvZzoKICAgIAog ICAgICAgICAgICAqIGluY2x1ZGUvZGVidWcvaGVscGVyX2Z1bmN0aW9ucy5oIChfX2NoZWNrX3Np bmd1bGFyKTogQWRkIG92ZXJsb2FkCiAgICAgICAgICAgIGZvciBfX25vcm1hbF9pdGVyYXRvciB0 aGF0IGNoZWNrcyBmb3IgdmFsdWUtaW5pdGlhbGl6ZWQgaXRlcmF0b3JzLgoKZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2hlbHBlcl9mdW5jdGlvbnMuaCBiL2xpYnN0ZGMr Ky12My9pbmNsdWRlL2RlYnVnL2hlbHBlcl9mdW5jdGlvbnMuaAppbmRleCBjMDE0NGNlZDk3OS4u ZTBjNjkxNTFlM2EgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2hlbHBl cl9mdW5jdGlvbnMuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9oZWxwZXJfZnVu Y3Rpb25zLmgKQEAgLTM2LDYgKzM2LDEzIEBACiAKICNpbmNsdWRlIDxiaXRzL3N0bF9wYWlyLmg+ CQkJLy8gZm9yIHBhaXIKIAorbmFtZXNwYWNlIF9fZ251X2N4eAoreworX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFt ZSBfQ29udGFpbmVyPiBjbGFzcyBfX25vcm1hbF9pdGVyYXRvcjsKK19HTElCQ1hYX0VORF9OQU1F U1BBQ0VfVkVSU0lPTgorfQorCiBuYW1lc3BhY2UgX19nbnVfZGVidWcKIHsKICAgdGVtcGxhdGU8 dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfU2VxdWVuY2UsIHR5cGVuYW1lIF9DYXRlZ29y eT4KQEAgLTE0NCw3ICsxNTEsMTMgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAJX19wdHIgPT0g MDsKICAgICB9CiAKLSAgLyoqIFdlIHNheSB0aGF0IGludGVncmFsIHR5cGVzIGZvciBhIHZhbGlk IHJhbmdlLCBhbmQgZGVmZXIgdG8gb3RoZXIKKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl bmFtZSBfQ29udD4KKyAgICBfR0xJQkNYWF9DT05TVEVYUFIKKyAgICBpbmxpbmUgYm9vbAorICAg IF9fY2hlY2tfc2luZ3VsYXIoX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxfVHAqLCBfQ29u dD4gY29uc3QmIF9feCkKKyAgICB7IHJldHVybiBfX3guYmFzZSgpID09IDA7IH0KKworICAvKiog V2Ugc2F5IHRoYXQgaW50ZWdyYWwgdHlwZXMgZm9ybSBhIHZhbGlkIHJhbmdlLCBhbmQgZGVmZXIg dG8gb3RoZXIKICAgICogIHJvdXRpbmVzIHRvIHJlYWxpemUgd2hhdCB0byBkbyB3aXRoIGludGVn cmFsIHR5cGVzIGluc3RlYWQgb2YKICAgICogIGl0ZXJhdG9ycy4KICAgKi8K --000000000000a7762405c9d777be--