Граф коммитов

263 Коммитов

Автор SHA1 Сообщение Дата
nobu e8c6254680 thread_pthread.c: workaround for valgrind on Mac
* thread.c: revert r59053.

* thread_pthread.c (rb_thread_create_timer_thread): needs more
  stack space for valgrind.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-09 14:42:15 +00:00
normal 410362f6a2 thread_pthread: retry timer thread creation w/o attr on EINVAL
Setting a small stack size can fail due to having 3rd-party
libraries (e.g. libkqueue) loaded, if those libraries use
thread-local-storage (__thread) heavily.  This causes
pthread_create to fail with small stacks; even if our
timer_thread function does not hit any of the TLS-using code
paths.

Today, some RubyGems are capable of using libkqueue (or __thread
storage directly), and future versions of Ruby may use kqueue
internally.

cf. https://www.akkadia.org/drepper/tls.pdf

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-24 18:59:24 +00:00
nobu 4e44f6ef86 [DOC] replace Fixnum with Integer [ci skip]
* numeric.c: [DOC] update document for Integer class.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-26 06:11:23 +00:00
nobu dcc24cef2c thread_pthread.c: check stack on co-routine case
* thread_pthread.c (ruby_init_stack): check stack bounds even if
  get_main_stack succeeded, on the "co-routine" case.
  https://github.com/ruby/ruby/commit/53953ee#commitcomment-18887413

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-03 02:28:31 +00:00
nobu a716a2474b thread_pthread.c: no fork, no gvl_atfork
* thread_pthread.c (gvl_atfork): used in rb_thread_atfork_internal
  only if HAVE_WORKING_FORK is defined.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-20 14:24:39 +00:00
nobu 4bf8fa83b7 thread.c: defer setting name in initialize
* thread.c (rb_thread_setname): defer setting native thread name
  set in initialize until the native thread is created.
  [ruby-core:74963] [Bug #12290]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-15 13:30:03 +00:00
naruse 88291c190a * thread_pthread.c (reserve_stack): fix reserving position where
the stack growing bottom to top. [Bug #12118]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-24 16:51:30 +00:00
odaira a2594be783 * thread_pthread.c (getstack): __pi_stacksize returned by
pthread_getthrds_np() is wrong on AIX. Use
  __pi_stackend - __pi_stackaddr instead.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-04 18:14:18 +00:00
nagachika b7573a0081 * thread_pthread.c (rb_thread_create_timer_thread): destroy attr even
if pthread_create() failed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-29 19:26:52 +00:00
normal 24c979bdea thread_pthread.c (rb_thread_create_timer_thread): fix race
This fixes an occasional [ASYNC BUG] failure in
bootstraptest/test_fork.rb '[ruby-dev:37934]'
which tests fork/pthread_create failure by setting
RLIMIT_NPROC to 1 and triggering EAGAIN on pthread_create
when attempting to recreate the timer thread.

The problem timeline is as follows:

thread 1                           thread 2
---------------------------------------------------------------
rb_thread_create_timer_thread
setup_communication_pipe
                                   rb_thread_wakeup_timer_thread_low
pthread_create fails               pipe looks valid, write!
CLOSE_INVALIDATE (x4)              EBADF -> ASYNC BUG

The checks in rb_thread_wakeup_timer_thread_low only tried to
guarantee proper ordering with native_stop_timer_thread, not
rb_thread_create_timer_thread :x

Now, this should allow rb_thread_create_timer_thread to
synchronize properly with rb_thread_wakeup_timer_thread_low by
delaying the validation marking of the timer_thread_pipe until
we are certain the timer thread is alive.

In this version, rb_thread_wakeup_timer_thread_low becomes a
noop.  Threading is still completely broken with NPROC==1, but
there's not much we can do about it beside warn the user.
We no longer spew a scary [ASYNC BUG] message or dump core
on them.

* thread_pthread.c (setup_communication_pipe): delay setting owner
  (rb_thread_create_timer_thread): until thread creation succeeds
  [ruby-core:72590] [Bug #11922]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-29 18:20:27 +00:00
hsbt 6851be0f0c * compile.c: fix typos.
[ci skip][fix GH-1140] Patch by @jutaz
* dir.c: ditto.
* gc.c: ditto.
* io.c: ditto.
* node.h: ditto.
* thread_pthread.c: ditto.
* vm_insnhelper.c: ditto.
* vsnprintf.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-14 02:51:13 +00:00
nobu dfe27428f1 configure.in: split SET_THREAD_NAME
* configure.in: separate SET_CURRENT_THREAD_NAME, which can set
  the name of current thread only, and SET_ANOTHER_THREAD_NAME,
  which can set the name of other threads.
* thread.c (rb_thread_setname): use SET_ANOTHER_THREAD_NAME.  OS X
  is not possible to set another thread name.
* thread_pthread.c (native_set_thread_name, thread_timer): use
  SET_CURRENT_THREAD_NAME.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-03 02:57:14 +00:00
kosaki 487748fac8 * thread_pthread.c (register_ubf_list): renamed from
add_signal_thread_list.
* thread_pthread.c (unregister_ubf_list): renamed
  from remove_signal_thread_list.
* thread_pthread.c (ubf_wakeup_all_threads): renamed from
  ping_signal_thread_list.
* thread_pthread.c (ubf_wakeup_thread): renamed from
  ubf_select_each.
* thread_pthread.c (ubf_threads_empty): renamed from
  check_signal_thread_list().
* thread_pthread.c (ubf_list_lock): renamed from
  signal_thread_list_lock.

* thread_pthread.c (register_ubf_list): large simplification
  by using ccan/list.h.
  bonus: removed malloc() and exit(EXIT_FAILURE).
* thread_pthread.c (unregister_ubf_list): ditto.
* thread_pthread.c (ubf_threads_empty): ditto.
* thread_pthread.c (ubf_wakeup_all_threads): ditto.

* thread_pthread.c (print_signal_list): removed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 20:33:20 +00:00
nobu e29c109d2a Haiku now best effort support
* configure.in: remove obsolete workarounds for Haiku.
* dln.c, file.c, io.c: remove obsolete Haiku workarounds.
* thread_pthread.c: add stack bounds detection for Haiku.
* signal.c: get stack pointer from signal context on Haiku.
  [ruby-core:67923] [Bug #10811] [Fix GH-1109]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52721 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-23 03:54:42 +00:00
odaira f2d679c751 * thread_pthread.c: fix compile erros when
USE_SLEEPY_TIMER_THREAD is disabled.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-25 16:07:25 +00:00
nobu 5bed80ee36 thread_pthread.c: async_bug_fd
* thread_pthread.c (async_bug_fd): show failed file descriptor too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-06 15:27:25 +00:00
nobu 8a4f3a71a2 thread_pthread.c: async bug messages
* thread_pthread.c (consume_communication_pipe, CLOSE_INVALIDATE):
  adjust async bug messages.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-06 15:19:47 +00:00
naruse 3816f7574f * thread_pthread.c (reserve_stack): ensure the memory is really
allocated. [Bug #11457]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-18 11:21:50 +00:00
nobu 8b5f22c1b4 thread_pthread.c: suppress a warning
* thread_pthread.c (native_stop_timer_thread): explicit type of
  old value to suppress a pointer-sign warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-14 10:38:29 +00:00
normal f224fecc0f improve handling of timer thread shutdown
Shutting down the timer thread now always closes pipes to free FDs.
In fact, we close the write ends of the pipes is done in the main
RubyVM to signal the timer thread shutdown.

To effectively close pipes, we implement userspace locks via
atomics to force the pipe closing thread to wait on any signal
handlers which may be waking up.

While we're at it, improve robustness during resource exhaustion and
allow it to limp along non-fatally if restarting a timer thread
fails.

This reverts r51268

Note: this change is tested with VM_CHECK_MODE 1 in vm_core.h

* process.c (close_unless_reserved): add extra check
  (dup2_with_divert): remove
  (redirect_dup2): use dup2 without divert
  (before_exec_non_async_signal_safe): adjust call + comment
  (rb_f_exec): stop timer thread for all OSes
  (rb_exec_without_timer_thread): remove
* eval.c (ruby_cleanup): adjust call
* thread.c (rb_thread_stop_timer_thread): always close pipes
* thread_pthread.c (struct timer_thread_pipe): add writing field,
    mark owner_process volatile for signal handlers
  (rb_thread_wakeup_timer_thread_fd): check valid FD
  (rb_thread_wakeup_timer_thread): set writing flag to prevent close
  (rb_thread_wakeup_timer_thread_low): ditto
  (CLOSE_INVALIDATE): new macro
  (close_invalidate): new function
  (close_communication_pipe): removed
  (setup_communication_pipe_internal): make errors non-fatal
  (setup_communication_pipe): ditto
  (thread_timer): close reading ends inside timer thread
  (rb_thread_create_timer_thread): make errors non-fatal
  (native_stop_timer_thread): close write ends only, always,
   wait for signal handlers to finish
  (rb_divert_reserved_fd): remove
* thread_win32.c (native_stop_timer_thread): adjust (untested)
  (rb_divert_reserved_fd): remove
* vm_core.h: adjust prototype

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-14 09:44:10 +00:00
ngoto f242e17f9b * process.c (redirect_dup2): when the new FD of dup2() coflicts
with one of the timer thread FDs, the internal FD is diverted.
  [Bug #11336] [ruby-core:69886] [Bug #11350] [ruby-core:69961]
    
* process.c (dup2_with_divert): new function for the above purpose.
   
* thread_pthread.c (rb_divert_reserved_fd): new function for
  diverting reserved FD. If the given FD is the same as one of the
  reserved FDs, the reserved FD number is internally changed.
  It returns -1 when error. Otherwise, returns 0. It also returns
  0 if there is no need to change reserved FD number.

* thread_win32.c (rb_divert_reserved_fd): always returns 0 because
  of no reserved FDs.

* internal.h (rb_divert_reserved_fd): prototype declaration.
  It is Ruby internal use only.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-16 13:06:13 +00:00
ngoto d1bce9ec55 * process.c (redirect_close, parent_redirect_close): should not close
reserved FD. It should be closed in the exec system call due to the
  O_CLOEXEC or FD_CLOEXEC flag. [Bug #11353] [ruby-core:69977]
    
* process.c (close_unless_reserved): new function to close FD unless
  it is reserved for internal communication.
      
* thread_pthread.c (rb_reserved_fd_p): should check owner_process pid
  to avoid false positive in forked child process.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-15 14:26:22 +00:00
naruse 370bd884bc * configure.in: define SET_THREAD_NAME if it has pthread_set_name_np
for FreeBSD, and don't define it if both pthread_setname_np
  and pthread_set_name_np don't exist.

* thread_pthread.c (SET_THREAD_NAME): don't define if they don't exist.

* thread_pthread.c (native_set_thread_name): run if SET_THREAD_NAME
  is defined.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 06:56:57 +00:00
nobu 78c75612f0 thread_pthread.c: keep sp safe zone
* thread_pthread.c (reserve_stack): keep sp safe zone to get rid
  of crash by -fstack-check.  [ruby-core:68740] [Bug #11030]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-14 22:34:53 +00:00
nobu 40564c1e3b thread_pthread.c: use rb_pid_t
* thread_pthread.c (timer_thread_pipe.owner_process): process ID
  should be pid_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-01 12:27:06 +00:00
nobu 8fe95fea9d thread_pthread.c: Fix intermittent SIGBUS on Linux
* thread_pthread.c (reserve_stack): fix intermittent SIGBUS on
  Linux, by reserving the stack virtual address space at process
  start up so that it will not clash with the heap space.
  [Fix GH-822]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-31 03:06:26 +00:00
normal 8341136f07 thread.c: micro-optimize thread create/join
* thread.c (struct join_arg): restructure and make smaller
  (thread_join_sleep): avoid timeofday() call if forever
  (thread_join): pass join_arg.delay directly
  (rb_thread_inspect_msg): remove, inline into rb_thread_inspect
  (rb_thread_inspect): reduce branching and string creation
* thread_pthread.c (native_set_thread_name): create string directly
  to avoid reparsing. [Misc #10723]

This reduces time in benchmark/bm_vm_thread_create_join.rb by
a few percent.

Minor improvements only:

target 0: 2.1.5 (ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux])
target 1: trunk (ruby 2.3.0dev (2015-01-16 trunk 49282) [x86_64-linux])
target 2: built (ruby 2.3.0dev (2015-01-16 trunk 49282) [x86_64-linux])

benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name                    2.1.5   trunk   built
vm_thread_create_join   1.049   1.242   1.138

Speedup ratio: compare with the result of `2.1.5' (greater is better)
name                    trunk   built
vm_thread_create_join   0.845   0.923

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-28 17:06:40 +00:00
akr 1ea4976041 * thread_pthread.c (native_set_thread_name): New function to
set thread name visible with ps command on GNU/Linux.
  Ex. ps -o %c -L

* thread.c (thread_start_func_2): Call native_set_thread_name at
  beginning.
  (rb_thread_inspect_msg): Extract from rb_thread_inspect.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-21 05:14:47 +00:00
hsbt 8362f9b581 * symbian/*: removed Symbian support.
[Feature #10199][ruby-core:64725]
* dln.c: ditto.
* include/ruby/defines.h: ditto.
* thread_pthread.c: ditto.
* vm.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-04 11:09:32 +00:00
normal fdb2fc0b04 thread_pthread: prefer rb_nativethread* types/functions
This will make it easier for us to try alternative mutex/condvar
implementations while still using pthreads for thread management.
[Feature #10134]

* thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and
  RB_NATIVETHREAD_COND_INIT macros

* thread_pthread.c (native_mutex_lock, native_mutex_unlock,
  native_mutex_trylock, native_mutex_initialize,
  native_mutex_destroy, native_cond_wait):
  use rb_nativethread_lock_t instead of pthread_mutex_t

* thread_pthread.c (native_mutex_debug): make argument type-agnostic
  to avoid later cast.

* thread_pthread.c (register_cached_thread_and_wait):
  replace PTHREAD_COND_INITIALIZER with RB_NATIVETHREAD_COND_INIT,
  use native_mutex_{lock,unlock}

* thread_pthread.c (use_cached_thread):
  use native_mutex_{lock,unlock}

* thread_pthread.c (native_sleep):
  use rb_nativethread_lock_t to match th->interrupt_lock,
  use native_mutex_{lock,unlock}

* thread_pthread.c (timer_thread_lock): use rb_nativethread_lock_t type

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47185 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-15 00:17:53 +00:00
nobu dfd8c5d402 thread.c: fix for non-scalar pthread_t
* configure.in (rb_cv_scalar_pthread_t): pthread_t is not required
  to be a scalar type.
* thread.c (fill_thread_id_string, thread_id_str): dump pthread_t
  in hexadecimal form if it is not a scalar type, assume it can be
  represented in a pointer form otherwise.  based on the patch by
  Rei Odaira at [ruby-core:62867].  [ruby-core:62857] [Bug #9884]
* thread_pthread.c (Init_native_thread, thread_start_func_1),
  (native_thread_create): set thread_id_str if needed.
* vm_core.h (rb_thread_t): add thread_id_string if needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-11 08:38:09 +00:00
nobu e2b10b6d13 thread_pthread.c: timer thread flag
* thread_pthread.c (timer_thread): add a flag to tell timer thread
  is created, since 0 may be a valid value as pthread_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-11 08:37:44 +00:00
nobu a5b9624fdc thread_pthread.c: variable for errno
* thread_pthread.c (rb_thread_wakeup_timer_thread_fd): use a local
  variable for errno.

* thread_pthread.c (consume_communication_pipe): ditto.  add
  EWOULDBLOCK case.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 15:52:45 +00:00
nobu 3385f6a0d4 thread_pthread.c: timer_thread_pipe struct
* thread_pthread.c (timer_thread_pipe): aggregate timer thread
  pipe stuff into a struct.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 14:48:58 +00:00
nobu 779ce6b00e thread_pthread.c: compare with pthread_equal
* thread_pthread.c (ubf_select): compare thread_id with
  pthread_equal() but not directly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 14:47:04 +00:00
nobu a46e21c86f thread_pthread.c: variable for errno
* thread_pthread.c (timer_thread_sleep): use a local variable for
  errno.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 04:32:10 +00:00
nobu ed37579c6a thread_*.c: constify
* thread_{pthread,win32}.c (native_cond_timedwait): constify.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-09 14:31:34 +00:00
nobu 6245e02cd3 configure.in: define SET_THREAD_NAME
* configure.in (SET_THREAD_NAME): define according to
  pthread_setname_np variations.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-27 07:10:11 +00:00
nobu bb7ae984f8 configure.in: use pthread_setname_np only if available
* configure.in: check if pthread_setname_np is available.
* thread_pthread.c: pthread_setname_np is not available on old
  Darwins.  [ruby-core:60524] [Bug #9492]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-13 02:06:36 +00:00
nobu f423a63cfa thread_pthread.c: use get_stack
* thread_pthread.c (ruby_init_stack, ruby_stack_overflowed_p):
  place get_stack above others to get stack boundary information.
  [ruby-core:60113] [Bug #9454]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-28 07:33:20 +00:00
naruse 239c994243 * thread_pthread.c: rlimit is only available on Linux.
At least r44712 breaks FreeBSD.
  [ruby-core:60113] [Bug #9454]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-28 06:29:51 +00:00
nobu 628f75b752 vm_core.h: rb_thread_struct::machine
* vm_core.h (rb_thread_struct): aggregate cpu stuff into a struct,
  so that a debugger can show its content at once.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-28 06:09:58 +00:00
nobu d7b106db6f thread_pthread.c: cast to size_t
* thread_pthread.c (ruby_stack_overflowed_p): range of rlim_cur
  may be larger than size_t.  [ruby-core:60113] [Bug #9454]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-27 13:16:25 +00:00
nobu 60e85501f2 thread_pthread.c: get current main thread stack size
* thread_pthread.c: get current main thread stack size, which may
  be expanded than allocated size at initialization, by rlimit().
  [ruby-core:60113] [Bug #9454]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-27 12:53:48 +00:00
nobu 6802a3f6f2 thread_pthread.c: fix for dynamic PTHREAD_STACK_MIN
* thread_pthread.c (rb_thread_create_timer_thread): fix for platforms
  where PTHREAD_STACK_MIN is a dynamic value and not a compile-time
  constant.  [ruby-dev:47911] [Bug #9436]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-21 11:14:54 +00:00
nobu 03a89f5bc3 * thread_pthread.c (rb_thread_create_timer_thread): fix missing paren.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-21 08:26:17 +00:00
nobu ad9d4f0211 thread_pthread.c: expand timer thread stack size
* thread_pthread.c (rb_thread_create_timer_thread): expand timer
  thread stack size to get rid of segfault on FreeBSD/powerpc64.
  based on the patch by Steve Wills at [ruby-core:59923].
  [ruby-core:56590] [Bug #8783]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-21 07:26:47 +00:00
nobu a4963d464b thread_pthread.c: timer thread stack size
* thread_pthread.c (rb_thread_create_timer_thread): define the stack
  size for timer thread at compile time.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-21 07:26:46 +00:00
nobu 53953eee7c thread_pthread.c: use get_main_stack properly
* thread_pthread.c (ruby_init_stack): set stack_start properly by
  get_main_stack() if possible.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-18 13:47:12 +00:00
akr fbdd08b8c2 * thread_pthread.c (rb_thread_create_timer_thread): Show error
message instead of error number.

* cont.c (fiber_machine_stack_alloc): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-16 16:49:39 +00:00