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 [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 28E6439874D5 for ; Wed, 18 Aug 2021 14:40:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 28E6439874D5 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-563-WnbNaN3ANOmQzoi9pEtqOw-1; Wed, 18 Aug 2021 10:40:46 -0400 X-MC-Unique: WnbNaN3ANOmQzoi9pEtqOw-1 Received: by mail-wr1-f72.google.com with SMTP id v18-20020adfe2920000b029013bbfb19640so651446wri.17 for ; Wed, 18 Aug 2021 07:40:45 -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=pXT5V6kgLqpysiya4YHoI9tDwjOgZbYSmx/xQsWlgkY=; b=bZwnGTl9M0tv4KUNSR1A2PLVTg/Fv+aMtDwtoOtUz1JeJBOmCe+VE41N+vX08DnWFr KRt0vwvkAZykcmskPkCKK2Udf+/DvgiZYU2mnf4LyVamLCOQS9jEzGXECB+G6DcrXSo6 bx80KRITmEwQZtPiNW3nkPB5K2eFNb4/CQ2ZHW1NqN8LU1rH6H1Am+G0uzeKOR65d7E2 8RzdnjV3BN/RUctMBvYV/XVhXRgre2hwmFh6NRk5LdfgRXHst8vMTT6Sw/00IKmuN3e7 xzXsAeuoZj9p2qIL3C4xaU+WlxR2LV8poPMcWmaX1MmcqR8xUjyJrEjHegsy9fAfDBD6 IIGg== X-Gm-Message-State: AOAM530Z0jlRzVfbdLZEO+wjjKuZFUED4ee9Moof2+7XSarv4OHUOGmO L2lEH1b4V3K0FlpoF2+JkztQWRwyz5qngpCzyM4/NRcjdJlslD/A2y+YZ/96WXH45g29nXSIcOk k9B9nHkseNYQPXyztbO1uWm4WjIuXYuU= X-Received: by 2002:a7b:cd0d:: with SMTP id f13mr8811964wmj.22.1629297644974; Wed, 18 Aug 2021 07:40:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyE2oLuKrFL3ybqDO7kUQGi/iDr0uZtDVk+OIS3Y7ttsxzqqtpnfBZti6LWKea0MRUXckyXGHC4NpktrTjVn3E= X-Received: by 2002:a7b:cd0d:: with SMTP id f13mr8811944wmj.22.1629297644753; Wed, 18 Aug 2021 07:40:44 -0700 (PDT) MIME-Version: 1.0 References: <20200227130636.GV9441@redhat.com> In-Reply-To: From: Jonathan Wakely Date: Wed, 18 Aug 2021 15:40:33 +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="0000000000005983f105c9d66bf9" 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 14:40:51 -0000 --0000000000005983f105c9d66bf9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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. For now I've only pushed the second half of the patch, optimizing the std::min/max/minmax overloads taking an initializer_list (as attached). Tested powerpc64le-linux, pushed to trunk. --0000000000005983f105c9d66bf9 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_kshlqeuj0 Y29tbWl0IGRlNDRlZWU1ZDUyZjU5ODBiNmIyYjIxMjA5NDBmNzBjYzJmYTAwN2UKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBXZWQgQXVnIDE4IDEy OjI0OjEyIDIwMjEKCiAgICBsaWJzdGRjKys6IE1pbm9yIG9wdGltaXphdGlvbiBmb3IgbWluL21h eC9taW5tYXgKICAgIAogICAgVGhlIGRlYnVnIG1vZGUgY2hlY2tzIGZvciBhIHZhbGlkIHJhbmdl IGFyZSByZWR1bmRhbnQgd2hlbiB3ZSBoYXZlIGFuCiAgICBpbml0aWFsaXplcl9saXN0IGFyZ3Vt ZW50LCBiZWNhdXNlIHdlIGtub3cgaXQncyBhIHZhbGlkIHJhbmdlIGFscmVhZHkuCiAgICBCeSBt YWtpbmcgc3RkOjptaW4oaW5pdGlhbGllcl9saXN0PFQ+KSBjYWxsIHRoZSBpbnRlcm5hbCBfX21p bl9lbGVtZW50CiAgICBmdW5jdGlvbiBkaXJlY3RseSB3ZSBhdm9pZCBhIGZ1bmN0aW9uIGNhbGwg YW5kIHNraXAgdGhvc2UgY2hlY2tzLiBUaGUKICAgIHNhbWUgY2FuIGJlIGRvbmUgZm9yIHRoZSBv dmVybG9hZCB0YWtpbmcgYSBjb21wYXJpc29uIGZ1bmN0aW9uLCBhbmQgYWxzbwogICAgZm9yIHRo ZSBzdGQ6Om1heCBhbmQgc3RkOjptaW5tYXggb3ZlcmxvYWRzIGZvciBpbml0aWFsaXplcl9saXN0 CiAgICBhcmd1bWVudHMuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIFdha2VseSA8 andha2VseUByZWRoYXQuY29tPgogICAgCiAgICBsaWJzdGRjKystdjMvQ2hhbmdlTG9nOgogICAg CiAgICAgICAgICAgICogaW5jbHVkZS9iaXRzL3N0bF9hbGdvLmggKG1pbihpbml0aWFsaXplcl9s aXN0PFQ+KSkKICAgICAgICAgICAgKG1pbihpbml0aWFsaXplcl9saXN0PFQ+LCBDb21wYXJlKSk6 IENhbGwgX19taW5fZWxlbWVudCBkaXJlY3RseSB0bwogICAgICAgICAgICBhdm9pZCByZWR1bmRh bnQgZGVidWcgY2hlY2tzIGZvciB2YWxpZCByYW5nZXMuCiAgICAgICAgICAgIChtYXgoaW5pdGlh bGl6ZXJfbGlzdDxUPiksIG1heChpbml0aWFsaXplcl9saXN0PFQ+LCBDb21wYXJlKSk6CiAgICAg ICAgICAgIExpa2V3aXNlLCBmb3IgX19tYXhfZWxlbWVudC4KICAgICAgICAgICAgKG1pbm1heChp bml0aWFsaXplcl9saXN0PFQ+KSwgbWlubWF4KGluaXRpYWxpemVyX2xpc3Q8VD4sIENvbXBhcmUp KToKICAgICAgICAgICAgTGlrZXdpc2UsIGZvciBfX21pbm1heF9lbGVtZW50LgoKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ28uaCBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvc3RsX2FsZ28uaAppbmRleCA1NGFkMzgzNzExZi4uYWM0ZjJkMGY3MjEgMTAw NjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ28uaAorKysgYi9saWJz dGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF9hbGdvLmgKQEAgLTM0NDUsMzggKzM0NDUsMTUgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAkJCQkgICBfX2dudV9jeHg6Ol9fb3Bz OjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAgIH0KIAotICAvLyBOMjcyMiArIERSIDkx NS4KLSAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgotICAgIF9HTElCQ1hYMTRfQ09OU1RFWFBSCi0g ICAgaW5saW5lIF9UcAotICAgIG1pbihpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQotICAgIHsg cmV0dXJuICpzdGQ6Om1pbl9lbGVtZW50KF9fbC5iZWdpbigpLCBfX2wuZW5kKCkpOyB9Ci0KLSAg dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KLSAgICBfR0xJQkNYWDE0 X0NPTlNURVhQUgotICAgIGlubGluZSBfVHAKLSAgICBtaW4oaW5pdGlhbGl6ZXJfbGlzdDxfVHA+ IF9fbCwgX0NvbXBhcmUgX19jb21wKQotICAgIHsgcmV0dXJuICpzdGQ6Om1pbl9lbGVtZW50KF9f bC5iZWdpbigpLCBfX2wuZW5kKCksIF9fY29tcCk7IH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBf VHA+Ci0gICAgX0dMSUJDWFgxNF9DT05TVEVYUFIKLSAgICBpbmxpbmUgX1RwCi0gICAgbWF4KGlu aXRpYWxpemVyX2xpc3Q8X1RwPiBfX2wpCi0gICAgeyByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQo X19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5 cGVuYW1lIF9Db21wYXJlPgotICAgIF9HTElCQ1hYMTRfQ09OU1RFWFBSCi0gICAgaW5saW5lIF9U cAotICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCi0g ICAgeyByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwgX19j b21wKTsgfQotCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBfR0xJQkNYWDE0X0NPTlNU RVhQUgogICAgIGlubGluZSBwYWlyPF9UcCwgX1RwPgogICAgIG1pbm1heChpbml0aWFsaXplcl9s aXN0PF9UcD4gX19sKQogICAgIHsKKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2 ZShfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsKICAgICAgIHBhaXI8Y29uc3QgX1RwKiwgY29uc3Qg X1RwKj4gX19wID0KLQlzdGQ6Om1pbm1heF9lbGVtZW50KF9fbC5iZWdpbigpLCBfX2wuZW5kKCkp OworCXN0ZDo6X19taW5tYXhfZWxlbWVudChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLAorCQkJICAg ICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcigpKTsKICAgICAgIHJldHVybiBz dGQ6Om1ha2VfcGFpcigqX19wLmZpcnN0LCAqX19wLnNlY29uZCk7CiAgICAgfQogCkBAIC0zNDg1 LDggKzM0NjIsMTAgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBpbmxp bmUgcGFpcjxfVHAsIF9UcD4KICAgICBtaW5tYXgoaW5pdGlhbGl6ZXJfbGlzdDxfVHA+IF9fbCwg X0NvbXBhcmUgX19jb21wKQogICAgIHsKKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxl eGl2ZV9wcmVkKF9fbC5iZWdpbigpLCBfX2wuZW5kKCksIF9fY29tcCk7CiAgICAgICBwYWlyPGNv bnN0IF9UcCosIGNvbnN0IF9UcCo+IF9fcCA9Ci0Jc3RkOjptaW5tYXhfZWxlbWVudChfX2wuYmVn aW4oKSwgX19sLmVuZCgpLCBfX2NvbXApOworCXN0ZDo6X19taW5tYXhfZWxlbWVudChfX2wuYmVn aW4oKSwgX19sLmVuZCgpLAorCQkJICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBf aXRlcihfX2NvbXApKTsKICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigqX19wLmZpcnN0LCAq X19wLnNlY29uZCk7CiAgICAgfQogCkBAIC0zNzkzLDcgKzM3NzIsNyBAQCBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19p ID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogCXN0ZDo6aXRlcl9zd2FwKF9f aSwgX19maXJzdCArIF9fZChfX2csIF9fcF90eXBlKDAsIF9faSAtIF9fZmlyc3QpKSk7CiAgICAg fQotI2VuZGlmCisjZW5kaWYgLy8gVVNFIEM5OV9TVERJTlQKIAogI2VuZGlmIC8vIEMrKzExCiAK QEAgLTU3NDYsNiArNTcyNSw0OSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQUxHTwogCQkJ CV9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21wKSk7CiAgICAgfQogCisj aWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAorICAvLyBOMjcyMiArIERSIDkxNS4KKyAgdGVtcGxh dGU8dHlwZW5hbWUgX1RwPgorICAgIF9HTElCQ1hYMTRfQ09OU1RFWFBSCisgICAgaW5saW5lIF9U cAorICAgIG1pbihpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQorICAgIHsKKyAgICAgIF9fZ2xp YmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZShfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsKKyAgICAg IHJldHVybiAqX0dMSUJDWFhfU1REX0E6Ol9fbWluX2VsZW1lbnQoX19sLmJlZ2luKCksIF9fbC5l bmQoKSwKKwkgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CisgICAgfQor CisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CisgICAgX0dMSUJD WFgxNF9DT05TVEVYUFIKKyAgICBpbmxpbmUgX1RwCisgICAgbWluKGluaXRpYWxpemVyX2xpc3Q8 X1RwPiBfX2wsIF9Db21wYXJlIF9fY29tcCkKKyAgICB7CisgICAgICBfX2dsaWJjeHhfcmVxdWly ZXNfaXJyZWZsZXhpdmVfcHJlZChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLCBfX2NvbXApOworICAg ICAgcmV0dXJuICpfR0xJQkNYWF9TVERfQTo6X19taW5fZWxlbWVudChfX2wuYmVnaW4oKSwgX19s LmVuZCgpLAorCSAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsK KyAgICB9CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgorICAgIF9HTElCQ1hYMTRfQ09OU1RF WFBSCisgICAgaW5saW5lIF9UcAorICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQor ICAgIHsKKyAgICAgIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZShfX2wuYmVnaW4oKSwg X19sLmVuZCgpKTsKKyAgICAgIHJldHVybiAqX0dMSUJDWFhfU1REX0E6Ol9fbWF4X2VsZW1lbnQo X19sLmJlZ2luKCksIF9fbC5lbmQoKSwKKwkgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNz X2l0ZXIoKSk7CisgICAgfQorCisgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Nv bXBhcmU+CisgICAgX0dMSUJDWFgxNF9DT05TVEVYUFIKKyAgICBpbmxpbmUgX1RwCisgICAgbWF4 KGluaXRpYWxpemVyX2xpc3Q8X1RwPiBfX2wsIF9Db21wYXJlIF9fY29tcCkKKyAgICB7CisgICAg ICBfX2dsaWJjeHhfcmVxdWlyZXNfaXJyZWZsZXhpdmVfcHJlZChfX2wuYmVnaW4oKSwgX19sLmVu ZCgpLCBfX2NvbXApOworICAgICAgcmV0dXJuICpfR0xJQkNYWF9TVERfQTo6X19tYXhfZWxlbWVu dChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLAorCSAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2Nv bXBfaXRlcihfX2NvbXApKTsKKyAgICB9CisjZW5kaWYgLy8gQysrMTEKKwogI2lmIF9fY3BsdXNw bHVzID49IDIwMTQwMkwKICAgLy8vIFJlc2Vydm9pciBzYW1wbGluZyBhbGdvcml0aG0uCiAgIHRl bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl cmF0b3IsCg== --0000000000005983f105c9d66bf9--