]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 331324: Ensure thread library is initialized in pthread_testcancel().
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 16 Apr 2018 20:45:21 +0000 (20:45 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 16 Apr 2018 20:45:21 +0000 (20:45 +0000)
commiteb360eca6e023243b5b629ad6a1aa68ebeba8c4c
tree266e650aef3bf7f4d75821ee5a577b030b403a05
parentf0e82c50eacef99bd1d285aa5cefd0be929bb777
MFC 331324: Ensure thread library is initialized in pthread_testcancel().

Call _thr_check_init() before reading curthread in pthread_testcancel().

If a constructor in a library creates a semaphore via sem_init() and
then waits for it via sem_wait(), the program can core dump in
_pthread_testcancel() called from sem_wait().  This is because the
semaphore implementation lives in libc, so the library's constructors
can be run before libthr's constructors.

Sponsored by: DARPA / AFRL

git-svn-id: svn://svn.freebsd.org/base/stable/10@332633 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
lib/libthr/thread/thr_cancel.c