From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22606 invoked from network); 20 Jul 2023 14:08:57 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 20 Jul 2023 14:08:57 -0000 Received: (qmail 31909 invoked by uid 550); 20 Jul 2023 14:08:54 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 9457 invoked from network); 20 Jul 2023 13:53:25 -0000 From: changdiankang To: "musl@lists.openwall.com" Thread-Topic: [PATCH] set tid address in fork Thread-Index: Adm7ESCrbovhXSicS2y1F5DYXtnb1Q== Date: Thu, 20 Jul 2023 13:53:11 +0000 Message-ID: <953a6adcee154977b4695bb9e485225c@huawei.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.174.177.178] Content-Type: multipart/mixed; boundary="_002_953a6adcee154977b4695bb9e485225chuaweicom_" MIME-Version: 1.0 X-CFilter-Loop: Reflected Subject: [musl] [PATCH] set tid address in fork --_002_953a6adcee154977b4695bb9e485225chuaweicom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable In pthrad_exit the exiting thread will hold the thread list lock, and will unlock it in kernel by clear the tid address &__thread_list_lock. A thread created by pthrad_create is created with clone syscall with CLONE_CHILD_CLEARTID flag and &__thread_list_lock as child_tid parameter. When the thread exits, the thread list lock can be woke up (see man clone CLONE_CHILD_CLEARTID). But in fork, the main thread is created with fork syscall or with clone syscall without CLONE_CHILD_CLEARTID flag. The &__thread_list_lock is not be set to tid address. So when the main thread exits, the thread list lock can't be woke up by kernel. This may lead some problems when other child threads try to hold this lock. For example, a child thread blocks at waiting thread list lock when joining the main thread. To fix this issue, we should set &__thread_list_lock to the main thread tid address in fork. --_002_953a6adcee154977b4695bb9e485225chuaweicom_ Content-Type: application/octet-stream; name="0001-set-tid-address-in-fork.patch" Content-Description: 0001-set-tid-address-in-fork.patch Content-Disposition: attachment; filename="0001-set-tid-address-in-fork.patch"; size=1685; creation-date="Thu, 20 Jul 2023 13:51:41 GMT"; modification-date="Thu, 20 Jul 2023 13:48:30 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMzdlZDQ0ZjUwYjI2NmVlNmUxYWNiY2JiNDMzZmU0MjY0YjBlMzZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZyBEaWFua2FuZyA8Y2hhbmdkaWFua2FuZ0BodWF3ZWku Y29tPgpEYXRlOiBUaHUsIDIwIEp1bCAyMDIzIDE3OjI1OjAxICswODAwClN1YmplY3Q6IFtQQVRD SF0gc2V0IHRpZCBhZGRyZXNzIGluIGZvcmsKCkluIHB0aHJhZF9leGl0IHRoZSBleGl0aW5nIHRo cmVhZCB3aWxsIGhvbGQgdGhlIHRocmVhZCBsaXN0IGxvY2ssCmFuZCB3aWxsIHVubG9jayBpdCBp biBrZXJuZWwgYnkgY2xlYXIgdGhlIHRpZCBhZGRyZXNzICZfX3RocmVhZF9saXN0X2xvY2suCgpB IHRocmVhZCBjcmVhdGVkIGJ5IHB0aHJhZF9jcmVhdGUgaXMgY3JlYXRlZCB3aXRoIGNsb25lIHN5 c2NhbGwgd2l0aApDTE9ORV9DSElMRF9DTEVBUlRJRCBmbGFnIGFuZCAmX190aHJlYWRfbGlzdF9s b2NrIGFzIGNoaWxkX3RpZApwYXJhbWV0ZXIuIFdoZW4gdGhlIHRocmVhZCBleGl0cywgdGhlIHRo cmVhZCBsaXN0IGxvY2sgY2FuIGJlIHdva2UgdXAKKHNlZSBtYW4gY2xvbmUgQ0xPTkVfQ0hJTERf Q0xFQVJUSUQpLgoKQnV0IGluIGZvcmssIHRoZSBtYWluIHRocmVhZCBpcyBjcmVhdGVkIHdpdGgg Zm9yayBzeXNjYWxsIG9yIHdpdGgKY2xvbmUgc3lzY2FsbCB3aXRob3V0IENMT05FX0NISUxEX0NM RUFSVElEIGZsYWcuIFRoZSAmX190aHJlYWRfbGlzdF9sb2NrCmlzIG5vdCBiZSBzZXQgdG8gdGlk IGFkZHJlc3MuIFNvIHdoZW4gdGhlIG1haW4gdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkCmxpc3Qg bG9jayBjYW4ndCBiZSB3b2tlIHVwIGJ5IGtlcm5lbC4gVGhpcyBtYXkgbGVhZHMgc29tZSBwcm9i bGVtcyB3aGVuCm90aGVyIGNoaWxkIHRocmVhZHMgdHJ5IHRvIGhvbGQgdGhpcyBsb2NrLiBGb3Ig ZXhhbXBsZSwgYSBjaGlsZCB0aHJlYWQKYmxvY2tzIGF0IHdhaXRpbmcgdGhyZWFkIGxpc3QgbG9j ayB3aGVuIGpvaW5pbmcgdGhlIG1haW4gdGhyZWFkLgoKVG8gZml4IHRoaXMgaXNzdWUsIHdlIHNo b3VsZCBzZXQgJl9fdGhyZWFkX2xpc3RfbG9jayB0byB0aGUgbWFpbiB0aHJlYWQgdGlkCmFkZHJl c3MgaW4gZm9yay4KClNpZ25lZC1vZmYtYnk6IENoYW5nIERpYW5rYW5nIDxjaGFuZ2RpYW5rYW5n QGh1YXdlaS5jb20+Ci0tLQogc3JjL3Byb2Nlc3MvX0ZvcmsuYyB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9wcm9j ZXNzL19Gb3JrLmMgYi9zcmMvcHJvY2Vzcy9fRm9yay5jCmluZGV4IGRhMDYzODY4Li5hMTkyZTVh MiAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MvX0ZvcmsuYworKysgYi9zcmMvcHJvY2Vzcy9fRm9y ay5jCkBAIC0yMyw3ICsyMyw3IEBAIHBpZF90IF9Gb3JrKHZvaWQpCiAjZW5kaWYKIAlpZiAoIXJl dCkgewogCQlwdGhyZWFkX3Qgc2VsZiA9IF9fcHRocmVhZF9zZWxmKCk7Ci0JCXNlbGYtPnRpZCA9 IF9fc3lzY2FsbChTWVNfZ2V0dGlkKTsKKwkJc2VsZi0+dGlkID0gX19zeXNjYWxsKFNZU19zZXRf dGlkX2FkZHJlc3MsICZfX3RocmVhZF9saXN0X2xvY2spOwogCQlzZWxmLT5yb2J1c3RfbGlzdC5v ZmYgPSAwOwogCQlzZWxmLT5yb2J1c3RfbGlzdC5wZW5kaW5nID0gMDsKIAkJc2VsZi0+bmV4dCA9 IHNlbGYtPnByZXYgPSBzZWxmOwotLSAKMi4yNS4xCgo= --_002_953a6adcee154977b4695bb9e485225chuaweicom_--