From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 77909 invoked by alias); 3 Aug 2015 16:26:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 77898 invoked by uid 89); 3 Aug 2015 16:26:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 03 Aug 2015 16:26:25 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id B16963F0C0; Mon, 3 Aug 2015 16:26:23 +0000 (UTC) Received: from localhost.localdomain (ovpn-113-21.phx2.redhat.com [10.3.113.21]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t73GQNEn002616; Mon, 3 Aug 2015 12:26:23 -0400 Subject: Re: Fix two more memory leaks in threader To: James Greenhalgh References: <555CB809.7020308@redhat.com> <20150720141905.GA23841@arm.com> Cc: gcc-patches From: Jeff Law Message-ID: <55BF962E.409@redhat.com> Date: Mon, 03 Aug 2015 16:26:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <20150720141905.GA23841@arm.com> Content-Type: multipart/mixed; boundary="------------040006030302010302010806" X-IsSubscribed: yes X-SW-Source: 2015-08/txt/msg00096.txt.bz2 This is a multi-part message in MIME format. --------------040006030302010302010806 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1198 On 07/20/2015 08:19 AM, James Greenhalgh wrote: > > I think we either want to defer the unordered_remove until we're done > processing all the vector elements, or make sure to look at element 'i' > again after we've moved something new in to it. Correct. Two loops had this mistake -- while others got it right. Sigh. The easiest fix is to change how we increment "i" in those loops so that it's only incremented if we do not delete the path. That happens to also match how other cases are handled. Thanks for catching these mistakes. > > A testcase would need to expose at least two threads which we later want > to cancel, one of which ends up at the end of the vector of threading > opportunities. We should then see only the first of those threads > actually get cancelled, and the second skipped over. Reproducing these > conditions is quite tough, which has stopped me finding a useful example > for the list, I'll be sure to follow-up this thread if I do get to one. Thankfully BZ had two closely related testcases. Bootstrapped and regression tested on x86_64-unknown-linux-gnu. Installed on the trunk. (Unfortunately it didn't resolve the ppc64 issue I was looking at ;( Jeff --------------040006030302010302010806 Content-Type: text/plain; charset=UTF-8; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" Content-length: 5584 ZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCmlu ZGV4IGZiOWQxMTUuLjlhYmRlOWYgMTAwNjQ0Ci0tLSBhL2djYy9DaGFuZ2VM b2cKKysrIGIvZ2NjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDE1 LTA4LTAzICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgorCisJUFIgbWlk ZGxlLWVuZC82NjMxNAorCVBSIGdjb3YtcHJvZmlsZS82Njg5OQorCSogdHJl ZS1zc2EtdGhyZWFkdXBkYXRlLmMgKG1hcmtfdGhyZWFkZWRfYmxvY2tzKTog Q29ycmVjdGx5CisJaXRlcmF0ZSBvdmVyIHRoZSBqdW1wIHRocmVhZGluZyBw YXRocyB3aGVuIGFuIGVsZW1lbnQgaW4gdGhlCisJanVtcCB0aHJlYWRpbmcg cGF0aHMgYXJyYXkgaXMgZWxpbWluYXRlZC4KKwogMjAxNS0wOC0wMyAgU2Vn aGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+ CiAKIAkqIE1ha2VmaWxlLmluIChPQkpTKTogUHV0IGdpbXBsZS1tYXRjaC5v IGFuZCBnZW5lcmljLW1hdGNoLm8gZmlyc3QuCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZyBiL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9n CmluZGV4IGE0MDM3NjcuLjBhODQxYjUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvQ2hhbmdlTG9nCisrKyBiL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9n CkBAIC0xLDMgKzEsMTAgQEAKKzIwMTUtMDgtMDMgIEplZmYgTGF3ICA8bGF3 QHJlZGhhdC5jb20+CisKKwlQUiBtaWRkbGUtZW5kLzY2MzE0CisJUFIgZ2Nv di1wcm9maWxlLzY2ODk5CisJKiBnY2MuZGcvcHI2Njg5OS5jOiBOZXcgdGVz dC4KKwkqIGdjYy5kZy9wcjY2MzE0LmM6IE5ldyB0ZXN0LgorCiAyMDE1LTA4 LTAzICBNYXJlayBQb2xhY2VrICA8cG9sYWNla0ByZWRoYXQuY29tPgogCiAJ UFIgYy82NzA4OApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv cHI2NjMxNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2NjMxNC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NGFiNWIKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY2MzE0 LmMKQEAgLTAsMCArMSwzMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnU4OSAtT3MgLWZwcm9maWxlLWFy Y3MgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyIgfSAqLworCitjaGFyICph OworaW50IGQ7CisKK3N0YXRpYyBpbnQKK2ZuMSAoaW50IGIsIGludCBjKQor eworICB3aGlsZSAoYSkKKyAgICBpZiAoKmEpCisgICAgICByZXR1cm4gLTEy NjsKKyAgaWYgKGIpCisgICAgcmV0dXJuIC0xMjsKKyAgaWYgKGMgPT0gLTEy KQorICAgIHJldHVybiBjOworfQorCit2b2lkCitmbjIgKGludCBiLCBpbnQg YykKK3sKKyAgZm9yICg7OykKKyAgICB7CisgICAgICBkID0gZm4xIChiLCBj KTsKKyAgICAgIHN3aXRjaCAoZCkKKyAgICAgICAgeworICAgICAgICBjYXNl IC0xMjY6CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIGRlZmF1bHQ6 CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2Njg5OS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvcHI2Njg5OS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjFmZmYxODEKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY2ODk5LmMKQEAgLTAsMCArMSw0 MSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU9zIC1mcHJvZmlsZS1hcmNzIiB9ICovCisKK3N0cnVjdAoreworICBp bnQgYXV0aG9yaXR5OworfSAqIGEsICpiLCBjLCBkOworaW50IGUsIGY7Citz dGF0aWMgaW50CitmbjEgKCkKK3sKKyAgaWYgKGEpCisgICAgZ290byB2ZXJp ZmllZDsKKyAgaWYgKGIpCisgICAgZ290byBtYXRjaGVkOworICByZXR1cm4g LTEyNjsKK21hdGNoZWQ6CisgIGUgPSAwOwordmVyaWZpZWQ6CisgIGlmIChi KQorICAgIGZvciAoOyAmYyAhPSBiOyBjID0gZCkKKyAgICAgIDsKKyAgcmV0 dXJuIDA7Cit9CisKK2ludAorZm4yICgpCit7CisgIGZvciAoOzspCisgICAg eworICAgICAgZiA9IGZuMSAoKTsKKyAgICAgIHN3aXRjaCAoZikKKyAgICAg ICAgeworICAgICAgICBjYXNlIC0xMjY6CisgICAgICAgICAgY29udGludWU7 CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS10 aHJlYWR1cGRhdGUuYyBiL2djYy90cmVlLXNzYS10aHJlYWR1cGRhdGUuYwpp bmRleCAzMWRkZjI1Li41YTVmOGRmIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1z c2EtdGhyZWFkdXBkYXRlLmMKKysrIGIvZ2NjL3RyZWUtc3NhLXRocmVhZHVw ZGF0ZS5jCkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBtYXJrX3RocmVhZGVkX2Js b2NrcyAoYml0bWFwIHRocmVhZGVkX2Jsb2NrcykKICAgICAgY2FzZXMgd2hl cmUgdGhlIHNlY29uZCBwYXRoIHN0YXJ0cyBhdCBhIGRvd25zdHJlYW0gZWRn ZSBvbiB0aGUgc2FtZQogICAgICBwYXRoKS4gIEZpcnN0IHJlY29yZCBhbGwg am9pbmVyIHBhdGhzLCBkZWxldGluZyBhbnkgaW4gdGhlIHVuZXhwZWN0ZWQK ICAgICAgY2FzZSB3aGVyZSB0aGVyZSBpcyBhbHJlYWR5IGEgcGF0aCBmb3Ig dGhhdCBpbmNvbWluZyBlZGdlLiAgKi8KLSAgZm9yIChpID0gMDsgaSA8IHBh dGhzLmxlbmd0aCAoKTsgaSsrKQorICBmb3IgKGkgPSAwOyBpIDwgcGF0aHMu bGVuZ3RoICgpOykKICAgICB7CiAgICAgICB2ZWM8anVtcF90aHJlYWRfZWRn ZSAqPiAqcGF0aCA9IHBhdGhzW2ldOwogCkBAIC0yMTQwLDYgKzIxNDAsNyBA QCBtYXJrX3RocmVhZGVkX2Jsb2NrcyAoYml0bWFwIHRocmVhZGVkX2Jsb2Nr cykKIAkgIGlmICgoKnBhdGgpWzBdLT5lLT5hdXggPT0gTlVMTCkKIAkgICAg ewogCSAgICAgICgqcGF0aClbMF0tPmUtPmF1eCA9IHBhdGg7CisJICAgICAg aSsrOwogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKQEAgLTIxNDksMTAgKzIx NTAsMTUgQEAgbWFya190aHJlYWRlZF9ibG9ja3MgKGJpdG1hcCB0aHJlYWRl ZF9ibG9ja3MpCiAJICAgICAgZGVsZXRlX2p1bXBfdGhyZWFkX3BhdGggKHBh dGgpOwogCSAgICB9CiAJfQorICAgICAgZWxzZQorCXsKKwkgIGkrKzsKKwl9 CiAgICAgfQorCiAgIC8qIFNlY29uZCwgbG9vayBmb3IgcGF0aHMgdGhhdCBo YXZlIGFueSBvdGhlciBqdW1wIHRocmVhZCBhdHRhY2hlZCB0bwogICAgICB0 aGVtLCBhbmQgZWl0aGVyIGZpbmlzaCBjb252ZXJ0aW5nIHRoZW0gb3IgY2Fu Y2VsIHRoZW0uICAqLwotICBmb3IgKGkgPSAwOyBpIDwgcGF0aHMubGVuZ3Ro ICgpOyBpKyspCisgIGZvciAoaSA9IDA7IGkgPCBwYXRocy5sZW5ndGggKCk7 KQogICAgIHsKICAgICAgIHZlYzxqdW1wX3RocmVhZF9lZGdlICo+ICpwYXRo ID0gcGF0aHNbaV07CiAgICAgICBlZGdlIGUgPSAoKnBhdGgpWzBdLT5lOwpA QCAtMjE2Nyw3ICsyMTczLDEwIEBAIG1hcmtfdGhyZWFkZWRfYmxvY2tzIChi aXRtYXAgdGhyZWFkZWRfYmxvY2tzKQogCSAgLyogSWYgd2UgaXRlcmF0ZWQg dGhyb3VnaCB0aGUgZW50aXJlIHBhdGggd2l0aG91dCBleGl0aW5nIHRoZSBs b29wLAogCSAgICAgdGhlbiB3ZSBhcmUgZ29vZCB0byBnbywgcmVjb3JkIGl0 LiAgKi8KIAkgIGlmIChqID09IHBhdGgtPmxlbmd0aCAoKSkKLQkgICAgYml0 bWFwX3NldF9iaXQgKHRtcCwgZS0+ZGVzdC0+aW5kZXgpOworCSAgICB7CisJ ICAgICAgYml0bWFwX3NldF9iaXQgKHRtcCwgZS0+ZGVzdC0+aW5kZXgpOwor CSAgICAgIGkrKzsKKwkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJICAgICAg ZS0+YXV4ID0gTlVMTDsKQEAgLTIxNzcsNiArMjE4NiwxMCBAQCBtYXJrX3Ro cmVhZGVkX2Jsb2NrcyAoYml0bWFwIHRocmVhZGVkX2Jsb2NrcykKIAkgICAg ICBkZWxldGVfanVtcF90aHJlYWRfcGF0aCAocGF0aCk7CiAJICAgIH0KIAl9 CisgICAgICBlbHNlCisJeworCSAgaSsrOworCX0KICAgICB9CiAKICAgLyog SWYgb3B0aW1pemluZyBmb3Igc2l6ZSwgb25seSB0aHJlYWQgdGhyb3VnaCBi bG9jayBpZiB3ZSBkb24ndCBoYXZlCg== --------------040006030302010302010806--