cvs commit: src/libexec/rtld-elf rtld.c rtld_lock.c rtld_lock.h
Konstantin Belousov
kib at FreeBSD.org
Tue May 20 09:38:45 UTC 2008
kib 2008-05-20 09:38:44 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_7)
libexec/rtld-elf rtld.c rtld_lock.c rtld_lock.h
Log:
MFC
rev. 1.126 of libexec/rtld-elf/rtld.c
rev. 1.5 of libexec/rtld-elf/rtld_lock.c
rev. 1.3 of libexec/rtld-elf/rtld_lock.h
Fix the problem with the C++ exception handling for the multithreaded
programs.
From the PR description:
The gcc runtime's _Unwind_Find_FDE function, invoked during exception
handling's stack unwinding, is not safe to execute from within multiple
threads. FreeBSD' s dl_iterate_phdr() however permits multiple threads
to pass through it though. The result is surprisingly reliable infinite
looping of one or more threads if they just happen to be unwinding at
the same time.
Introduce the new lock that is write locked around the dl_iterate_pdr,
thus providing required exclusion for the stack unwinders.
PR: threads/123062
Submitted by: Andy Newman <an at atrn org>
Reviewed by: kan
Revision Changes Path
1.124.2.1 +5 -3 src/libexec/rtld-elf/rtld.c
1.4.2.1 +2 -1 src/libexec/rtld-elf/rtld_lock.c
1.2.20.1 +1 -0 src/libexec/rtld-elf/rtld_lock.h
More information about the cvs-src
mailing list