Hello, I compiled the following code on 6.1-PRERELEASE and ran:
dltest.c ---------------------------------------------------------------------- #include <err.h> #include <dlfcn.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define NTHREADS 10 void *func(void *dummy); int main(void) { pthread_t tids[NTHREADS]; int error; int i; for (i = 0; i < NTHREADS; i++) { error = pthread_create(&tids[i], NULL, func, NULL); if (error) errc(1, error, "pthread_create"); } for (;;) sleep(1); /* NOTREACHED */ exit(0); } void *func(void *dummy) { void *h; for (;;) { if ((h = dlopen("/usr/lib/libm.so", RTLD_NOW)) == NULL) errx(1, "dlopen: %s", dlerror()); if (dlclose(h) == -1) errx(1, "dlclose: %s", dlerror()); } /* NOTREACHED */ return (NULL); } ---------------------------------------------------------------------- % cc -Wall -o dltest dltest.c -lpthread % ./dltest ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/rtld.c:2445 Segmentation fault (core dumped) % cc -Wall -o dltest dltest.c -lthr % ./dltest % ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/rtld.c:1723 Abort (core dumped) Hmm, it seems dlopen() and dlclose() are not MT-safe. Is this a known issue? -- Kazuaki Oda _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"