PR/59751 CVS commit: src
"Taylor R Campbell" <[email protected]>
| Newsgroups | gmane.os.netbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
The following reply was made to PR lib/59751; it has been noted by GNATS. From: "Taylor R Campbell" <[email protected]> To: [email protected] Cc: Subject: PR/59751 CVS commit: src Date: Thu, 16 Jul 2026 02:50:11 +0000 Module Name: src Committed By: riastradh Date: Thu Jul 16 02:50:11 UTC 2026 Modified Files: src/distrib/sets/lists/debug: shl.mi src/distrib/sets/lists/tests: shl.mi src/tests/libexec/ld.elf_so: Makefile t_dlclose_thread.c Added Files: src/tests/libexec/ld.elf_so/helper_recurdso: Makefile h_helper_recurdso.c src/tests/libexec/ld.elf_so/helper_recurdso2: Makefile h_helper_recurdso2.c Log Message: t_dlclose_thread: Test recursive dlopen/dlclose too. Simple test first: - h_helper_recurdso dlopens h_helper_dso2 - h_helper_dso2 needs h_helper_dso1 When dlopening h_helper_recurdso, the initialization order must be: ENTER h_helper_recurdso -> h_helper_dso1 -> h_helper_dso2 LEAVE h_helper_recurdso For the more complex test, we have the relations: - h_helper_recurdso2 needs h_helper_recurdso - h_helper_recurdso dlopens h_helper_dso2 - h_helper_dso2 needs h_helper_dso1 (And the finalization order must be in reverse.) When dlopening h_helper_recurdso2, the initialization order, therefore, must be: ENTER h_helper_recurdso -> h_helper_dso1 -> h_helper_dso2 LEAVE h_helper_recurdso h_helper_recurdso2 PR lib/59751: dlclose is not MT-safe depending on the libraries unloaded (Really, this is about a followup bug in the fix for that issue, which broke recursive dlopen/dlclose.) To generate a diff of this commit: cvs rdiff -u -r1.409 -r1.410 src/distrib/sets/lists/debug/shl.mi cvs rdiff -u -r1.17 -r1.18 src/distrib/sets/lists/tests/shl.mi cvs rdiff -u -r1.35 -r1.36 src/tests/libexec/ld.elf_so/Makefile cvs rdiff -u -r1.3 -r1.4 src/tests/libexec/ld.elf_so/t_dlclose_thread.c cvs rdiff -u -r0 -r1.1 src/tests/libexec/ld.elf_so/helper_recurdso/Makefile \ src/tests/libexec/ld.elf_so/helper_recurdso/h_helper_recurdso.c cvs rdiff -u -r0 -r1.1 src/tests/libexec/ld.elf_so/helper_recurdso2/Makefile \ src/tests/libexec/ld.elf_so/helper_recurdso2/h_helper_recurdso2.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.