From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4908 invoked by alias); 18 Nov 2010 02:42:52 -0000 Received: (qmail 4753 invoked by uid 22791); 18 Nov 2010 02:42:50 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mail-wy0-f175.google.com (HELO mail-wy0-f175.google.com) (74.125.82.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 18 Nov 2010 02:42:45 +0000 Received: by wyb34 with SMTP id 34so2796438wyb.20 for ; Wed, 17 Nov 2010 18:42:42 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.0.7 with SMTP id 7mr21663wea.22.1290048162100; Wed, 17 Nov 2010 18:42:42 -0800 (PST) Received: by 10.216.139.42 with HTTP; Wed, 17 Nov 2010 18:42:42 -0800 (PST) Date: Thu, 18 Nov 2010 06:18:00 -0000 Message-ID: Subject: [v3] libstdc++/46455 - fix mutex and condvar leaks From: Jonathan Wakely To: "libstdc++" , gcc-patches Content-Type: multipart/mixed; boundary=0016e6407ce071f69b04954abe2c 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 X-SW-Source: 2010-11/txt/msg01880.txt.bz2 --0016e6407ce071f69b04954abe2c Content-Type: text/plain; charset=ISO-8859-1 Content-length: 569 This change adds destructors to the mutex types in the library, it's not trivial and could do with more testing on platforms where thread model != posix. I hacked the gthr headers to reproduce leaks under valgrind and think I've tested all the code paths, but I don't have anything suitable to add to the testsuite. PR libstdc++/46455 * include/std/mutex: Define destructors for mutex types which use an init function. * include/ext/concurrence.h: Likewise. Tested x86_64-linux, I plan to commit this to trunk in the next day or two. --0016e6407ce071f69b04954abe2c Content-Type: text/plain; charset=US-ASCII; name="pr46455-full.txt" Content-Disposition: attachment; filename="pr46455-full.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggn1arcg0 Content-length: 8963 SW5kZXg6IGluY2x1ZGUvc3RkL211dGV4Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGluY2x1ZGUvc3RkL211dGV4CShyZXZpc2lvbiAxNjY1NzUpCisr KyBpbmNsdWRlL3N0ZC9tdXRleAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiAr NzUsOCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQogICAgICAg Ly8gWFhYIEVBR0FJTiwgRU5PTUVNLCBFUEVSTSwgRUJVU1kobWF5KSwgRUlO VkFMKG1heSkKICAgICAgIF9fR1RIUkVBRF9NVVRFWF9JTklUX0ZVTkNUSU9O KCZfTV9tdXRleCk7CiAgICAgfQorCisgICAgfm11dGV4KCkgeyBfX2d0aHJl YWRfbXV0ZXhfZGVzdHJveSgmX01fbXV0ZXgpOyB9CiAjZW5kaWYKIAogICAg IG11dGV4KGNvbnN0IG11dGV4JikgPSBkZWxldGU7CkBAIC0xMDksNiArMTEx LDQ1IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCiAgICAgeyBy ZXR1cm4gJl9NX211dGV4OyB9CiAgIH07CiAKKyNpZm5kZWYgX19HVEhSRUFE X1JFQ1VSU0lWRV9NVVRFWF9JTklUCisgIC8vIEZJWE1FOiBndGhyZWFkcyBk b2Vzbid0IGRlZmluZSBfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2Rlc3Ry b3kKKyAgLy8gc28gd2UgbmVlZCB0byBvYnRhaW4gYSBfX2d0aHJlYWRfbXV0 ZXhfdCB0byBkZXN0cm95CisgIGNsYXNzIF9fZGVzdHJveV9yZWN1cnNpdmVf bXV0ZXgKKyAgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9NeCwgdHlwZW5h bWUgX1JtPgorICAgICAgc3RhdGljIHZvaWQKKyAgICAgIF9TX2Rlc3Ryb3lf d2luMzIoX014KiBfX214LCBfUm0gY29uc3QqIF9fcm14KQorICAgICAgewor ICAgICAgICBfX214LT5jb3VudGVyID0gX19ybXgtPmNvdW50ZXI7CisgICAg ICAgIF9fbXgtPnNlbWEgPSBfX3JteC0+c2VtYTsKKyAgICAgICAgX19ndGhy ZWFkX211dGV4X2Rlc3Ryb3koX19teCk7CisgICAgICB9CisKKyAgcHVibGlj OgorICAgIC8vIG1hdGNoZXMgYSBndGhyLXdpbjMyLmggcmVjdXJzaXZlIG11 dGV4CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JtPgorICAgICAgc3RhdGlj IHR5cGVuYW1lIGVuYWJsZV9pZjxzaXplb2YoJl9SbTo6c2VtYSksIHZvaWQ+ Ojp0eXBlCisgICAgICBfU19kZXN0cm95KF9SbSogX19teCkKKyAgICAgIHsK KyAgICAgICAgX19ndGhyZWFkX211dGV4X3QgX190bXA7CisgICAgICAgIF9T X2Rlc3Ryb3lfd2luMzIoJl9fdG1wLCBfX214KTsKKyAgICAgIH0KKworICAg IC8vIG1hdGNoZXMgYSByZWN1cnNpdmUgbXV0ZXggd2l0aCBhIG1lbWJlciAn YWN0dWFsJworICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SbT4KKyAgICAgIHN0 YXRpYyB0eXBlbmFtZSBlbmFibGVfaWY8c2l6ZW9mKCZfUm06OmFjdHVhbCks IHZvaWQ+Ojp0eXBlCisgICAgICBfU19kZXN0cm95KF9SbSogX19teCkKKyAg ICAgIHsgX19ndGhyZWFkX211dGV4X2Rlc3Ryb3koJl9fbXgtPmFjdHVhbCk7 IH0KKworICAgIC8vIG1hdGNoZXMgd2hlbiB0aGVyZSdzIG9ubHkgb25lIG11 dGV4IHR5cGUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUm0+CisgICAgICBz dGF0aWMKKyAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxpc19zYW1lPF9SbSwg X19ndGhyZWFkX211dGV4X3Q+Ojp2YWx1ZSwgdm9pZD46OnR5cGUKKyAgICAg IF9TX2Rlc3Ryb3koX1JtKiBfX214KQorICAgICAgeyBfX2d0aHJlYWRfbXV0 ZXhfZGVzdHJveShfX214KTsgfQorICB9OworI2VuZGlmCisKICAgLy8vIHJl Y3Vyc2l2ZV9tdXRleAogICBjbGFzcyByZWN1cnNpdmVfbXV0ZXgKICAgewpA QCAtMTE4LDE3ICsxNTksMTkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF KHN0ZCkKICAgcHVibGljOgogICAgIHR5cGVkZWYgX19uYXRpdmVfdHlwZSog CQkJbmF0aXZlX2hhbmRsZV90eXBlOwogCisjaWZkZWYgX19HVEhSRUFEX1JF Q1VSU0lWRV9NVVRFWF9JTklUCisgICAgcmVjdXJzaXZlX211dGV4KCkgOiBf TV9tdXRleChfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQpIHsgfQor I2Vsc2UKICAgICByZWN1cnNpdmVfbXV0ZXgoKQogICAgIHsKICAgICAgIC8v IFhYWCBFQUdBSU4sIEVOT01FTSwgRVBFUk0sIEVCVVNZKG1heSksIEVJTlZB TChtYXkpCi0jaWZkZWYgX19HVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklU Ci0gICAgICBfX25hdGl2ZV90eXBlIF9fdG1wID0gX19HVEhSRUFEX1JFQ1VS U0lWRV9NVVRFWF9JTklUOwotICAgICAgX01fbXV0ZXggPSBfX3RtcDsKLSNl bHNlCiAgICAgICBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRfRlVO Q1RJT04oJl9NX211dGV4KTsKLSNlbmRpZgogICAgIH0KIAorICAgIH5yZWN1 cnNpdmVfbXV0ZXgoKQorICAgIHsgX19kZXN0cm95X3JlY3Vyc2l2ZV9tdXRl eDo6X1NfZGVzdHJveSgmX01fbXV0ZXgpOyB9CisjZW5kaWYKKwogICAgIHJl Y3Vyc2l2ZV9tdXRleChjb25zdCByZWN1cnNpdmVfbXV0ZXgmKSA9IGRlbGV0 ZTsKICAgICByZWN1cnNpdmVfbXV0ZXgmIG9wZXJhdG9yPShjb25zdCByZWN1 cnNpdmVfbXV0ZXgmKSA9IGRlbGV0ZTsKIApAQCAtMTc3LDE2ICsyMjAsMTcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKICAgcHVibGljOgog ICAgIHR5cGVkZWYgX19uYXRpdmVfdHlwZSogCQkgIAluYXRpdmVfaGFuZGxl X3R5cGU7CiAKLSAgICB0aW1lZF9tdXRleCgpCi0gICAgewogI2lmZGVmIF9f R1RIUkVBRF9NVVRFWF9JTklUCi0gICAgICBfX25hdGl2ZV90eXBlIF9fdG1w ID0gX19HVEhSRUFEX01VVEVYX0lOSVQ7Ci0gICAgICBfTV9tdXRleCA9IF9f dG1wOworICAgIHRpbWVkX211dGV4KCkgOiBfTV9tdXRleChfX0dUSFJFQURf TVVURVhfSU5JVCkgeyB9CiAjZWxzZQorICAgIHRpbWVkX211dGV4KCkKKyAg ICB7CiAgICAgICBfX0dUSFJFQURfTVVURVhfSU5JVF9GVU5DVElPTigmX01f bXV0ZXgpOwotI2VuZGlmCiAgICAgfQogCisgICAgfnRpbWVkX211dGV4KCkg eyBfX2d0aHJlYWRfbXV0ZXhfZGVzdHJveSgmX01fbXV0ZXgpOyB9CisjZW5k aWYKKwogICAgIHRpbWVkX211dGV4KGNvbnN0IHRpbWVkX211dGV4JikgPSBk ZWxldGU7CiAgICAgdGltZWRfbXV0ZXgmIG9wZXJhdG9yPShjb25zdCB0aW1l ZF9tdXRleCYpID0gZGVsZXRlOwogCkBAIC0yODEsMTcgKzMyNSwxOSBAQCBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQogICBwdWJsaWM6CiAgICAg dHlwZWRlZiBfX25hdGl2ZV90eXBlKiAJCQluYXRpdmVfaGFuZGxlX3R5cGU7 CiAKKyNpZmRlZiBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQKKyAg ICByZWN1cnNpdmVfdGltZWRfbXV0ZXgoKSA6IF9NX211dGV4KF9fR1RIUkVB RF9SRUNVUlNJVkVfTVVURVhfSU5JVCkgeyB9CisjZWxzZQogICAgIHJlY3Vy c2l2ZV90aW1lZF9tdXRleCgpCiAgICAgewogICAgICAgLy8gWFhYIEVBR0FJ TiwgRU5PTUVNLCBFUEVSTSwgRUJVU1kobWF5KSwgRUlOVkFMKG1heSkKLSNp ZmRlZiBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQKLSAgICAgIF9f bmF0aXZlX3R5cGUgX190bXAgPSBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVY X0lOSVQ7Ci0gICAgICBfTV9tdXRleCA9IF9fdG1wOwotI2Vsc2UKICAgICAg IF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVF9GVU5DVElPTigmX01f bXV0ZXgpOwotI2VuZGlmCiAgICAgfQogCisgICAgfnJlY3Vyc2l2ZV90aW1l ZF9tdXRleCgpCisgICAgeyBfX2Rlc3Ryb3lfcmVjdXJzaXZlX211dGV4Ojpf U19kZXN0cm95KCZfTV9tdXRleCk7IH0KKyNlbmRpZgorCiAgICAgcmVjdXJz aXZlX3RpbWVkX211dGV4KGNvbnN0IHJlY3Vyc2l2ZV90aW1lZF9tdXRleCYp ID0gZGVsZXRlOwogICAgIHJlY3Vyc2l2ZV90aW1lZF9tdXRleCYgb3BlcmF0 b3I9KGNvbnN0IHJlY3Vyc2l2ZV90aW1lZF9tdXRleCYpID0gZGVsZXRlOwog CkluZGV4OiBpbmNsdWRlL2V4dC9jb25jdXJyZW5jZS5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGluY2x1ZGUvZXh0L2NvbmN1cnJlbmNlLmgJKHJl dmlzaW9uIDE2NjU3NSkKKysrIGluY2x1ZGUvZXh0L2NvbmN1cnJlbmNlLmgJ KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDxl eGNlcHRpb24+CiAjaW5jbHVkZSA8Yml0cy9ndGhyLmg+IAogI2luY2x1ZGUg PGJpdHMvZnVuY3RleGNlcHQuaD4KKyNpbmNsdWRlIDxiaXRzL2NwcF90eXBl X3RyYWl0cy5oPgorI2luY2x1ZGUgPGV4dC90eXBlX3RyYWl0cy5oPgogCiBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0UoX19nbnVfY3h4KQogCkBAIC0xNjEs NiArMTYzLDE0IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShfX2dudV9j eHgpCiAjZW5kaWYgCiAgICAgfQogCisjaWYgX19HVEhSRUFEUyAmJiAhIGRl ZmluZWQgX19HVEhSRUFEX01VVEVYX0lOSVQKKyAgICB+X19tdXRleCgpIAor ICAgIHsgCisgICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCisJX19n dGhyZWFkX211dGV4X2Rlc3Ryb3koJl9NX211dGV4KTsgCisgICAgfQorI2Vu ZGlmIAorCiAgICAgdm9pZCBsb2NrKCkKICAgICB7CiAjaWYgX19HVEhSRUFE UwpAQCAtMjExLDYgKzIyMSwxNCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0UoX19nbnVfY3h4KQogI2VuZGlmIAogICAgIH0KIAorI2lmIF9fR1RIUkVB RFMgJiYgISBkZWZpbmVkIF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5J VAorICAgIH5fX3JlY3Vyc2l2ZV9tdXRleCgpCisgICAgeworICAgICAgaWYg KF9fZ3RocmVhZF9hY3RpdmVfcCgpKQorCV9TX2Rlc3Ryb3koJl9NX211dGV4 KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgbG9jaygpCiAgICAgeyAK ICNpZiBfX0dUSFJFQURTCkBAIC0yMzQsNyArMjUyLDQ0IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRShfX2dudV9jeHgpCiAgICAgfQogCiAgICAgX19n dGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90KiBndGhyZWFkX3JlY3Vyc2l2ZV9t dXRleCh2b2lkKQotICAgICAgeyByZXR1cm4gJl9NX211dGV4OyB9CisgICAg eyByZXR1cm4gJl9NX211dGV4OyB9CisKKyNpZiBfX0dUSFJFQURTICYmICEg ZGVmaW5lZCBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQKKyAgICAv LyBGSVhNRTogZ3RocmVhZHMgZG9lc24ndCBkZWZpbmUgX19ndGhyZWFkX3Jl Y3Vyc2l2ZV9tdXRleF9kZXN0cm95CisgICAgLy8gc28gd2UgbmVlZCB0byBv YnRhaW4gYSBfX2d0aHJlYWRfbXV0ZXhfdCB0byBkZXN0cm95CisgIHByaXZh dGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgX014LCB0eXBlbmFtZSBfUm0+ CisgICAgICBzdGF0aWMgdm9pZAorICAgICAgX1NfZGVzdHJveV93aW4zMihf TXgqIF9fbXgsIF9SbSBjb25zdCogX19ybXgpCisgICAgICB7CisgICAgICAg IF9fbXgtPmNvdW50ZXIgPSBfX3JteC0+Y291bnRlcjsKKyAgICAgICAgX19t eC0+c2VtYSA9IF9fcm14LT5zZW1hOworICAgICAgICBfX2d0aHJlYWRfbXV0 ZXhfZGVzdHJveShfX214KTsKKyAgICAgIH0KKworICAgIC8vIG1hdGNoZXMg YSBndGhyLXdpbjMyLmggcmVjdXJzaXZlIG11dGV4CisgICAgdGVtcGxhdGU8 dHlwZW5hbWUgX1JtPgorICAgICAgc3RhdGljIHR5cGVuYW1lIF9fZW5hYmxl X2lmPHNpemVvZigmX1JtOjpzZW1hKSwgdm9pZD46Ol9fdHlwZQorICAgICAg X1NfZGVzdHJveShfUm0qIF9fbXgpCisgICAgICB7CisgICAgICAgIF9fZ3Ro cmVhZF9tdXRleF90IF9fdG1wOworICAgICAgICBfU19kZXN0cm95X3dpbjMy KCZfX3RtcCwgX19teCk7CisgICAgICB9CisKKyAgICAvLyBtYXRjaGVzIGEg cmVjdXJzaXZlIG11dGV4IHdpdGggYSBtZW1iZXIgJ2FjdHVhbCcKKyAgICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfUm0+CisgICAgICBzdGF0aWMgdHlwZW5hbWUg X19lbmFibGVfaWY8c2l6ZW9mKCZfUm06OmFjdHVhbCksIHZvaWQ+OjpfX3R5 cGUKKyAgICAgIF9TX2Rlc3Ryb3koX1JtKiBfX214KQorICAgICAgeyBfX2d0 aHJlYWRfbXV0ZXhfZGVzdHJveSgmX19teC0+YWN0dWFsKTsgfQorCisgICAg Ly8gbWF0Y2hlcyB3aGVuIHRoZXJlJ3Mgb25seSBvbmUgbXV0ZXggdHlwZQor ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SbT4KKyAgICAgIHN0YXRpYyB0eXBl bmFtZQorICAgICAgX19lbmFibGVfaWY8c3RkOjpfX2FyZV9zYW1lPF9SbSwg X19ndGhyZWFkX211dGV4X3Q+OjpfX3ZhbHVlLAorICAgICAgICB2b2lkPjo6 X190eXBlCisgICAgICBfU19kZXN0cm95KF9SbSogX19teCkKKyAgICAgIHsg X19ndGhyZWFkX211dGV4X2Rlc3Ryb3koX19teCk7IH0KKyNlbmRpZgogICB9 OwogCiAgIC8vLyBTY29wZWQgbG9jayBpZGlvbS4KQEAgLTI4NCw2ICszMzks MTQgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKF9fZ251X2N4eCkKICNl bmRpZiAKICAgICB9CiAKKyNpZiBfX0dUSFJFQURTICYmICEgZGVmaW5lZCBf X0dUSFJFQURfQ09ORF9JTklUCisgICAgfl9fY29uZCgpIAorICAgIHsgCisg ICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCisJX19ndGhyZWFkX2Nv bmRfZGVzdHJveSgmX01fY29uZCk7IAorICAgIH0KKyNlbmRpZiAKKwogICAg IHZvaWQgYnJvYWRjYXN0KCkKICAgICB7CiAjaWYgX19HVEhSRUFEUwo= --0016e6407ce071f69b04954abe2c--