From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12388 invoked by alias); 29 Jul 2011 12:10:28 -0000 Received: (qmail 12372 invoked by uid 22791); 29 Jul 2011 12:10:26 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_RK X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 29 Jul 2011 12:10:12 +0000 Received: from kpbe19.cbf.corp.google.com (kpbe19.cbf.corp.google.com [172.25.105.83]) by smtp-out.google.com with ESMTP id p6SLVaft004696 for ; Thu, 28 Jul 2011 14:31:36 -0700 Received: from yxi11 (yxi11.prod.google.com [10.190.3.11]) by kpbe19.cbf.corp.google.com with ESMTP id p6SLVZtv001248 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Thu, 28 Jul 2011 14:31:35 -0700 Received: by yxi11 with SMTP id 11so2319105yxi.5 for ; Thu, 28 Jul 2011 14:31:35 -0700 (PDT) Received: by 10.100.199.14 with SMTP id w14mr396858anf.130.1311888694940; Thu, 28 Jul 2011 14:31:34 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.199.14 with SMTP id w14mr396854anf.130.1311888694823; Thu, 28 Jul 2011 14:31:34 -0700 (PDT) Received: by 10.100.95.10 with HTTP; Thu, 28 Jul 2011 14:31:34 -0700 (PDT) Date: Fri, 29 Jul 2011 14:32:00 -0000 Message-ID: Subject: [gold patch] Fix thread cancellation problem From: Cary Coutant To: Ian Lance Taylor , Binutils Content-Type: multipart/mixed; boundary=0016368e1b32a3ca3504a927e392 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-07/txt/msg00278.txt.bz2 --0016368e1b32a3ca3504a927e392 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1245 If the number of threads requested for --thread-count-middle or --thread-count-final is smaller than that of an earlier pass, gold will arrange for the n excess threads to cancel themselves. The first n threads that happen to check for this condition will terminate. Unfortunately, if one of those n threads happens to be thread #0, control returns to the end of main(), and gold exits normally without completing the link. This patch fixes this problem by having only the threads whose thread numbers are larger than the desired thread count terminate. Tested on x86_64 with a build of libffmpeg. OK? -cary * workqueue-internal.h (Workqueue_threader::should_cancel_thread): Add thread_number parameter. (Workqueue_threader_threadpool::should_cancel_thread): Likewise. * workqueue-threads.cc (Workqueue_threader_threadpool::should_cancel_thread): Cancel current thread if its thread number is greater than desired thread count. * workqueue.cc (Workqueue_threader_single::should_cancel_thread): Add thread_number parameter. (Workqueue::should_cancel_thread): Likewise. (Workqueue::find_runnable_or_wait): Pass thread_number to should_cancel_thread. * workqueue.h (Workqueue::should_cancel_thread): Add thread_number parameter. --0016368e1b32a3ca3504a927e392 Content-Type: text/plain; charset=US-ASCII; name="gold-thread-cancel-patch.txt" Content-Disposition: attachment; filename="gold-thread-cancel-patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqo8f8ze0 Content-length: 5226 MjAxMS0wNy0yOCAgQ2FyeSBDb3V0YW50ICA8Y2NvdXRhbnRAZ29vZ2xlLmNv bT4KCgkqIHdvcmtxdWV1ZS1pbnRlcm5hbC5oIChXb3JrcXVldWVfdGhyZWFk ZXI6OnNob3VsZF9jYW5jZWxfdGhyZWFkKToKCUFkZCB0aHJlYWRfbnVtYmVy IHBhcmFtZXRlci4KCShXb3JrcXVldWVfdGhyZWFkZXJfdGhyZWFkcG9vbDo6 c2hvdWxkX2NhbmNlbF90aHJlYWQpOiBMaWtld2lzZS4KCSogd29ya3F1ZXVl LXRocmVhZHMuY2MKCShXb3JrcXVldWVfdGhyZWFkZXJfdGhyZWFkcG9vbDo6 c2hvdWxkX2NhbmNlbF90aHJlYWQpOiBDYW5jZWwKCWN1cnJlbnQgdGhyZWFk IGlmIGl0cyB0aHJlYWQgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBkZXNpcmVk IHRocmVhZAoJY291bnQuCgkqIHdvcmtxdWV1ZS5jYyAoV29ya3F1ZXVlX3Ro cmVhZGVyX3NpbmdsZTo6c2hvdWxkX2NhbmNlbF90aHJlYWQpOgoJQWRkIHRo cmVhZF9udW1iZXIgcGFyYW1ldGVyLgoJKFdvcmtxdWV1ZTo6c2hvdWxkX2Nh bmNlbF90aHJlYWQpOiBMaWtld2lzZS4KCShXb3JrcXVldWU6OmZpbmRfcnVu bmFibGVfb3Jfd2FpdCk6IFBhc3MgdGhyZWFkX251bWJlciB0bwoJc2hvdWxk X2NhbmNlbF90aHJlYWQuCgkqIHdvcmtxdWV1ZS5oIChXb3JrcXVldWU6OnNo b3VsZF9jYW5jZWxfdGhyZWFkKTogQWRkIHRocmVhZF9udW1iZXIKCXBhcmFt ZXRlci4KCgpjb21taXQgZjM4MDU5M2UzZjg3YWU5YmEyZTNjZTYwMThiYjVl ZTMyNzk3YmZiOApBdXRob3I6IENhcnkgQ291dGFudCA8Y2NvdXRhbnRAZ29v Z2xlLmNvbT4KRGF0ZTogICBUaHUgSnVsIDI4IDE0OjE1OjQ4IDIwMTEgLTA3 MDAKCiAgICBGaXggcmFjZSBpbiB0aHJlYWQgY2FuY2VsbGF0aW9uLgoKZGlm ZiAtLWdpdCBhL2dvbGQvd29ya3F1ZXVlLWludGVybmFsLmggYi9nb2xkL3dv cmtxdWV1ZS1pbnRlcm5hbC5oCmluZGV4IDY4NGM2NWIuLjc2NGRjOTEgMTAw NjQ0Ci0tLSBhL2dvbGQvd29ya3F1ZXVlLWludGVybmFsLmgKKysrIGIvZ29s ZC93b3JrcXVldWUtaW50ZXJuYWwuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFz cyBXb3JrcXVldWVfdGhyZWFkZXIKIAogICAvLyBSZXR1cm4gd2hldGhlciB0 byBjYW5jZWwgdGhlIGN1cnJlbnQgdGhyZWFkLgogICB2aXJ0dWFsIGJvb2wK LSAgc2hvdWxkX2NhbmNlbF90aHJlYWQoKSA9IDA7CisgIHNob3VsZF9jYW5j ZWxfdGhyZWFkKGludCB0aHJlYWRfbnVtYmVyKSA9IDA7CiAKICBwcm90ZWN0 ZWQ6CiAgIC8vIEdldCB0aGUgV29ya3F1ZXVlLgpAQCAtODQsNyArODQsNyBA QCBjbGFzcyBXb3JrcXVldWVfdGhyZWFkZXJfdGhyZWFkcG9vbCA6IHB1Ymxp YyBXb3JrcXVldWVfdGhyZWFkZXIKIAogICAvLyBSZXR1cm4gd2hldGhlciB0 byBjYW5jZWwgYSB0aHJlYWQuCiAgIGJvb2wKLSAgc2hvdWxkX2NhbmNlbF90 aHJlYWQoKTsKKyAgc2hvdWxkX2NhbmNlbF90aHJlYWQoaW50IHRocmVhZF9u dW1iZXIpOwogCiAgIC8vIFByb2Nlc3MgYWxsIHRhc2tzLiAgVGhpcyBrZWVw cyBydW5uaW5nIHVudGlsIHRvbGQgdG8gY2FuY2VsLgogICB2b2lkCmRpZmYg LS1naXQgYS9nb2xkL3dvcmtxdWV1ZS10aHJlYWRzLmNjIGIvZ29sZC93b3Jr cXVldWUtdGhyZWFkcy5jYwppbmRleCA2MGQ0YWRjLi5kZTJjZTViIDEwMDY0 NAotLS0gYS9nb2xkL3dvcmtxdWV1ZS10aHJlYWRzLmNjCisrKyBiL2dvbGQv d29ya3F1ZXVlLXRocmVhZHMuY2MKQEAgLTE3NCw3ICsxNzQsNyBAQCBXb3Jr cXVldWVfdGhyZWFkZXJfdGhyZWFkcG9vbDo6c2V0X3RocmVhZF9jb3VudChp bnQgdGhyZWFkX2NvdW50KQogLy8gUmV0dXJuIHdoZXRoZXIgdGhlIGN1cnJl bnQgdGhyZWFkIHNob3VsZCBiZSBjYW5jZWxsZWQuCiAKIGJvb2wKLVdvcmtx dWV1ZV90aHJlYWRlcl90aHJlYWRwb29sOjpzaG91bGRfY2FuY2VsX3RocmVh ZCgpCitXb3JrcXVldWVfdGhyZWFkZXJfdGhyZWFkcG9vbDo6c2hvdWxkX2Nh bmNlbF90aHJlYWQoaW50IHRocmVhZF9udW1iZXIpCiB7CiAgIC8vIEZhc3Qg ZXhpdCB3aXRob3V0IHRha2luZyBhIGxvY2suCiAgIGlmICghdGhpcy0+Y2hl Y2tfdGhyZWFkX2NvdW50XykKQEAgLTE4MiwxMiArMTgyLDEzIEBAIFdvcmtx dWV1ZV90aHJlYWRlcl90aHJlYWRwb29sOjpzaG91bGRfY2FuY2VsX3RocmVh ZCgpCiAKICAgewogICAgIEhvbGRfbG9jayBobCh0aGlzLT5sb2NrXyk7Ci0g ICAgaWYgKHRoaXMtPnRocmVhZHNfID4gdGhpcy0+ZGVzaXJlZF90aHJlYWRf Y291bnRfKQorICAgIGlmICh0aHJlYWRfbnVtYmVyID4gdGhpcy0+ZGVzaXJl ZF90aHJlYWRfY291bnRfKQogICAgICAgewogCS0tdGhpcy0+dGhyZWFkc187 CisJaWYgKHRoaXMtPnRocmVhZHNfIDw9IHRoaXMtPmRlc2lyZWRfdGhyZWFk X2NvdW50XykKKwkgIHRoaXMtPmNoZWNrX3RocmVhZF9jb3VudF8gPSAwOwog CXJldHVybiB0cnVlOwogICAgICAgfQotICAgIHRoaXMtPmNoZWNrX3RocmVh ZF9jb3VudF8gPSAwOwogICB9CiAKICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t Z2l0IGEvZ29sZC93b3JrcXVldWUuY2MgYi9nb2xkL3dvcmtxdWV1ZS5jYwpp bmRleCA2NDQ5YmJhLi5lNzhlODZiIDEwMDY0NAotLS0gYS9nb2xkL3dvcmtx dWV1ZS5jYworKysgYi9nb2xkL3dvcmtxdWV1ZS5jYwpAQCAtMTEwLDcgKzEx MCw3IEBAIGNsYXNzIFdvcmtxdWV1ZV90aHJlYWRlcl9zaW5nbGUgOiBwdWJs aWMgV29ya3F1ZXVlX3RocmVhZGVyCiAgIHsgZ29sZF9hc3NlcnQodGhyZWFk X2NvdW50ID4gMCk7IH0KIAogICBib29sCi0gIHNob3VsZF9jYW5jZWxfdGhy ZWFkKCkKKyAgc2hvdWxkX2NhbmNlbF90aHJlYWQoaW50KQogICB7IHJldHVy biBmYWxzZTsgfQogfTsKIApAQCAtMjAyLDkgKzIwMiw5IEBAIFdvcmtxdWV1 ZTo6cXVldWVfbmV4dChUYXNrKiB0KQogLy8gUmV0dXJuIHdoZXRoZXIgdG8g Y2FuY2VsIHRoZSBjdXJyZW50IHRocmVhZC4KIAogaW5saW5lIGJvb2wKLVdv cmtxdWV1ZTo6c2hvdWxkX2NhbmNlbF90aHJlYWQoKQorV29ya3F1ZXVlOjpz aG91bGRfY2FuY2VsX3RocmVhZChpbnQgdGhyZWFkX251bWJlcikKIHsKLSAg cmV0dXJuIHRoaXMtPnRocmVhZGVyXy0+c2hvdWxkX2NhbmNlbF90aHJlYWQo KTsKKyAgcmV0dXJuIHRoaXMtPnRocmVhZGVyXy0+c2hvdWxkX2NhbmNlbF90 aHJlYWQodGhyZWFkX251bWJlcik7CiB9CiAKIC8vIEZpbmQgYSBydW5uYWJs ZSB0YXNrIGluIFRBU0tTLiAgUmV0dXJuIE5VTEwgaWYgbm9uZSBjb3VsZCBi ZSBmb3VuZC4KQEAgLTI2NCw3ICsyNjQsNyBAQCBXb3JrcXVldWU6OmZpbmRf cnVubmFibGVfb3Jfd2FpdChpbnQgdGhyZWFkX251bWJlcikKIAkgIHJldHVy biBOVUxMOwogCX0KIAotICAgICAgaWYgKHRoaXMtPnNob3VsZF9jYW5jZWxf dGhyZWFkKCkpCisgICAgICBpZiAodGhpcy0+c2hvdWxkX2NhbmNlbF90aHJl YWQodGhyZWFkX251bWJlcikpCiAJcmV0dXJuIE5VTEw7CiAKICAgICAgIGdv bGRfZGVidWcoREVCVUdfVEFTSywgIiUzZCBzbGVlcGluZyIsIHRocmVhZF9u dW1iZXIpOwpkaWZmIC0tZ2l0IGEvZ29sZC93b3JrcXVldWUuaCBiL2dvbGQv d29ya3F1ZXVlLmgKaW5kZXggOTEyMWUxMC4uNDI0YjVlNyAxMDA2NDQKLS0t IGEvZ29sZC93b3JrcXVldWUuaAorKysgYi9nb2xkL3dvcmtxdWV1ZS5oCkBA IC0yNjgsNyArMjY4LDcgQEAgY2xhc3MgV29ya3F1ZXVlCiAKICAgLy8gUmV0 dXJuIHdoZXRoZXIgdG8gY2FuY2VsIHRoaXMgdGhyZWFkLgogICBib29sCi0g IHNob3VsZF9jYW5jZWxfdGhyZWFkKCk7CisgIHNob3VsZF9jYW5jZWxfdGhy ZWFkKGludCB0aHJlYWRfbnVtYmVyKTsKIAogICAvLyBNYXN0ZXIgV29ya3F1 ZXVlIGxvY2suICBUaGlzIGNvbnRyb2xzIGFjY2VzcyB0byB0aGUgZm9sbG93 aW5nCiAgIC8vIG1lbWJlciB2YXJpYWJsZXMuCg== --0016368e1b32a3ca3504a927e392--