In r179417 the implementation of pthread_once in libthr was changed from using a global pthread_mutex_t for synchronization to rolling its own synchronization mechanism. Unfortunately, this introduced a bug. Calling _pthread_mutex_lock implicitly ensured that _thr_check_init() had been called. In the current version, there is no such guarantee. This means that if your first call into libthr is pthread_once, your executable will segfault when it tries to access curthread. This patch resolves the issue for me: Index: lib/libthr/thread/thr_once.c =================================================================== --- lib/libthr/thread/thr_once.c (revision 220603) +++ lib/libthr/thread/thr_once.c (working copy) _at__at_ -64,6 +64,8 _at__at_ struct pthread *curthread; int state; + _thr_check_init(); + for (;;) { state = once_control->state; if (state == ONCE_DONE) If there are no objections I'll commit this soon.Received on Tue Apr 19 2011 - 14:53:56 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:13 UTC