diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | thread_pthread.c | 12 |
2 files changed, 18 insertions, 1 deletions
@@ -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); |