Browse files

thread_pthread.c: init stack with ulimit

* 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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
1 parent 5c677a8 commit 54c17dc8a979ce072991e4480e5ae3d70bad9b2a @nobu nobu committed Oct 3, 2012
Showing with 18 additions and 1 deletion.
  1. +7 −0 ChangeLog
  2. +11 −1 thread_pthread.c
View
7 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.
View
12 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);

0 comments on commit 54c17dc

Please sign in to comment.