mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-23 14:40:51 +01:00
Use PTHREAD_CREATE_DETACHED macro instead of 1: fix Solaris crash
When calling pthread_attr_setdetachstate, we were using 1 as the argument. But the pthreads documentation says that you have to say PTHREAD_CREATE_DETACH, which on Solaris is apparently 0x40. Calling pthread_attr_setdetachstate with 1 crashes on Solaris with FLTBOUNDS. (Because we're so late in the release cycle, I made the code define PTHREAD_CREATE_DETACHED if it doesn't exist, so we aren't likely to break any other platforms.) This bug was introduced when we made threading mandatory in 0.2.6.1-alpha; previously, we had force-disabled threading on Solaris. See #9495 discussion.
This commit is contained in:
parent
985687bc4f
commit
192ed94410
2 changed files with 9 additions and 1 deletions
4
changes/bug9495_redux
Normal file
4
changes/bug9495_redux
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
o Major bugfixes (portability):
|
||||||
|
- Do not crash on startup when running on Solaris. Fixes a bug
|
||||||
|
related to our fix for 9495; bugfix on 0.2.6.1-alpha. Reported
|
||||||
|
by "ruebezahl".
|
|
@ -279,7 +279,11 @@ tor_threads_init(void)
|
||||||
pthread_mutexattr_init(&attr_recursive);
|
pthread_mutexattr_init(&attr_recursive);
|
||||||
pthread_mutexattr_settype(&attr_recursive, PTHREAD_MUTEX_RECURSIVE);
|
pthread_mutexattr_settype(&attr_recursive, PTHREAD_MUTEX_RECURSIVE);
|
||||||
tor_assert(0==pthread_attr_init(&attr_detached));
|
tor_assert(0==pthread_attr_init(&attr_detached));
|
||||||
tor_assert(0==pthread_attr_setdetachstate(&attr_detached, 1));
|
#ifndef PTHREAD_CREATE_DETACHED
|
||||||
|
#define PTHREAD_CREATE_DETACHED 1
|
||||||
|
#endif
|
||||||
|
tor_assert(0==pthread_attr_setdetachstate(&attr_detached,
|
||||||
|
PTHREAD_CREATE_DETACHED));
|
||||||
threads_initialized = 1;
|
threads_initialized = 1;
|
||||||
set_main_thread();
|
set_main_thread();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue