summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--thread_pthread.c12
2 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 49ce0cc5be..265469c5cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed Oct 3 15:33:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use getrlimit() for the main
+ thread on Mac OS X, since pthread_get_stack{addr,size}_np() and
+ return the default value always, but not the ulimit value.
+ [ruby-dev:46174] [Bug #7084]
+
Wed Oct 3 11:43:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_reopen): improvement to accept optional arguments.
diff --git a/thread_pthread.c b/thread_pthread.c
index be6b017e50..ab227e32b3 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -492,6 +492,8 @@ static rb_thread_t *register_cached_thread_and_wait(void);
#define STACKADDR_AVAILABLE 1
#elif defined HAVE_PTHREAD_GET_STACKADDR_NP && defined HAVE_PTHREAD_GET_STACKSIZE_NP
#define STACKADDR_AVAILABLE 1
+#undef MAINSTACKADDR_AVAILABLE
+#define MAINSTACKADDR_AVAILABLE 0
void *pthread_get_stackaddr_np(pthread_t);
size_t pthread_get_stacksize_np(pthread_t);
#elif defined HAVE_THR_STKSEGMENT || defined HAVE_PTHREAD_STACKSEG_NP
@@ -500,6 +502,14 @@ size_t pthread_get_stacksize_np(pthread_t);
#define STACKADDR_AVAILABLE 1
#endif
+#ifndef MAINSTACKADDR_AVAILABLE
+# ifdef STACKADDR_AVAILABLE
+# define MAINSTACKADDR_AVAILABLE 1
+# else
+# define MAINSTACKADDR_AVAILABLE 0
+# endif
+#endif
+
#ifdef STACKADDR_AVAILABLE
/*
* Get the initial address and size of current thread's stack
@@ -614,7 +624,7 @@ ruby_init_stack(volatile VALUE *addr
{
size_t size = 0;
size_t space = 0;
-#if defined(STACKADDR_AVAILABLE)
+#if MAINSTACKADDR_AVAILABLE
void* stackaddr;
STACK_GROW_DIR_DETECTION;
get_stack(&stackaddr, &size);