[tor-commits] [tor/master] Use PTHREAD_CREATE_DETACHED macro instead of 1: fix Solaris crash
nickm at torproject.org
nickm at torproject.org
Thu Mar 12 14:06:20 UTC 2015
commit 192ed944101174d775d27ac54002ee9bc2708080
Author: Nick Mathewson <nickm at torproject.org>
Date: Thu Mar 12 09:49:45 2015 -0400
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.
---
changes/bug9495_redux | 4 ++++
src/common/compat_pthreads.c | 6 +++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/changes/bug9495_redux b/changes/bug9495_redux
new file mode 100644
index 0000000..74b0cdf
--- /dev/null
+++ b/changes/bug9495_redux
@@ -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".
diff --git a/src/common/compat_pthreads.c b/src/common/compat_pthreads.c
index f4a6cad..246076b 100644
--- a/src/common/compat_pthreads.c
+++ b/src/common/compat_pthreads.c
@@ -279,7 +279,11 @@ tor_threads_init(void)
pthread_mutexattr_init(&attr_recursive);
pthread_mutexattr_settype(&attr_recursive, PTHREAD_MUTEX_RECURSIVE);
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;
set_main_thread();
}
More information about the tor-commits
mailing list