summaryrefslogtreecommitdiff
path: root/thread.c
AgeCommit message (Collapse)Author
2009-08-22* thread.c (rb_thread_schedule): don't recur infinitely.akr
(rb_threadptr_execute_interrupts): ditto. [ruby-dev:38060] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-21* thread.c (rb_check_deadlock): decrease number of sleepers beforemame
deadlock detection because the deadlock exception makes main thread run. [ruby-dev:39142] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-20* thread.c (rb_thread_terminate_all): do not ignore interrupt whenmatz
reaping threads on termination. [ruby-dev:39107] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-03* thread.c (recursive_push): need to set UNTRUST. [ruby-dev:38997]matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-03* thread.c (recursive_push): untrust internal hash to preventmatz
unexpected SecurityError. a patch from Kazuhiro NISHIYAMA. Fix: #1864 [ruby-dev:38982] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24371 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-05* thread.c (rb_threadptr_exec_event_hooks): new function tonobu
execute event hooks, with preserving errinfo. [ruby-core:24118] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-17* thread.c (ruby_thread_stack_overflow): call rb_exc_raise() onmatz
stack overflows in the signal handler, if sigaltstack is available. On stack overflow (and with sigaltstack), the signal handler is more likely to have room to create an exception object. [ruby-core:23813] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-14* thread.c, vm_eval.c: add Thread.backtrace.ko1
* test/ruby/test_thread.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-08* thread.c: rename functions which require a parameterko1
"rb_thread_t *", the prefix to be rb_threadptr_ instead of rb_thread_. * thread.c (rb_thread_add_event_hook(), rb_thread_remove_event_hook): change the parameter type from rb_thread_t * to VALUE. * eval.c, eval_error.c, eval_intern.h, signal.c, vm_core.h, vm_eval.c: ditto. * include/ruby/intern.h: remove decl of rb_thread_signal_raise() and rb_thread_signal_exit(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-24* thread.c (rb_exec_recursive_paired): new function for propernobu
handling of recursive arrays. [EXPERIMENTAL] [ruby-core:23402] * array.c (rb_ary_equal, rb_ary_eql, rb_ary_cmp): use above. * hash.c (hash_equal): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-09* thread.c: fixed types.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-01* thread.c (rb_thread_fd_select): new function to call selectmatz
using rb_fdset_t. * io.c (select_internal): use rb_thread_fd_select instead of rb_thread_select. based on the patch from Kengo Matsuyama. [ruby-dev:38221] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12* array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,nobu
numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c, transcode_data.h, util.c, variable.c, vm_dump.c, include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c: suppress VC type warnings. [ruby-core:22726] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-28* eval_error.c (error_print): use volatile to suppress warnings.akr
* vm_eval.c (eval_string_with_cref): ditto. * thread.c (rb_exec_recursive): ditto. * eval_jump.c (rb_exec_end_proc): ditto. * eval.c (ruby_exec_node): ditto. (rb_longjmp): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-23* thread.c (thread_cleanup_func): unlock all locked mutexes even whenmame
forking. [ruby-core:22269] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-18* thread.c (thread_start_func_2): do not delete main thread fromnobu
living_threads. [ruby-core:19385], [ruby-core:22158] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12* thread.c: inline should be at beginning of declaration.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-01* cont.c (rb_fiber_current), dln.c (dln_print_undef, dln_undefined),nobu
eval.c (rb_iterator_p, rb_need_block), load.c: (Init_load), ruby.c (uscore_get, rb_f_chop), st.c (stat_col), signal.c (rb_signal_buff_size, ruby_sig_finalize), thread.c (rb_thread_sleep_forever, rb_thread_sleep_deadly, rb_thread_alone): protoized. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-22* thread.c (rb_time_timeval): made a real prototype. a patch fromnobu
Marcus Rueckert <darix AT opensu.se> at [ruby-core:21492]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19* thread.c (rb_thread_execute_interrupts): needsnobu
rb_signal_buff_size to be declared. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19* vm.c: add a prefix "rb_" to exposed functionsko1
vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(), vm_get_sourceline(), vm_cref(), vm_localjump_error(), vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump(). This changes may affect only core because most of renamed functions require a pointer of not-exposed struct such as rb_thread_t or NODE. In short, they are core functions. * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c, vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-16* thread.c (thread_start_func_2): call ruby_cleanup() if thread isko1
main thread. [ruby-dev:37624] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15* thread.c (rb_thread_execute_interrupts): if signal is alreadymame
buffered, main thread should wait until timer thread delivers it. * thread.c (timer_thread_function): should defer delivery of a signal if main thread does not yet trap a previous one. [ruby-dev:37676] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15* thread.c (call_trace_proc): as Matz said ([ruby-core:21183]),ko1
should skip rb_str_new2() if rb_sourcefile() returns NULL. rb_sourcefile() returns NULL if frame is toplevel of Fiber. [ruby-core:21161] [Bug #985] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-13 * include/ruby/intern.h, thread.c, win32/Makefile.sub (rb_fdset_t,usa
rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset, rb_fd_select, rb_fd_ptr, rb_fd_max, HAVE_RB_FD_INIT): new type, functions, and macros for Windows. * win32/win32.c (extract_fd, rb_w32_select): use rb_fdset_t to expand fd_array if needed. [ruby-core:19946] * win32/win32.c (copy_fd): new funcion for rb_w32_select(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-12* thread.c: fix comment (terminology: Global VM Lock).ko1
* thread.c (blocking_region_begin, blocking_region_end): save and clear th->blocking_region_buffer. * thread.c (rb_thread_call_with_gvl): check if it has GVL. * thread.c (ruby_thread_has_gvl_p): added. * vm_core.h: add decls. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-05rdoc update.kazu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-30* thread.c (rb_thread_blocking_region): add a comment.ko1
* thread.c (rb_thread_call_without_gvl): added as a alias of rb_thread_blocking_region(). * thread.c (rb_thread_call_with_gvl): added. * vm_core.h (rb_thread_t#blocking_region_buffer): added for rb_thread_call_with_gvl(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21185 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-29* thread.c (rb_mutex_trylock): return false if Mutex ownedko1
by current thread. [ruby-core:20943] * thread.c (rb_mutex_lock): check dead lock (recursive lock) here. * test/ruby/test_thread.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28* thread.c (mutex_free, mutex_unlock): add qualifiers.mame
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28* thread.c (mutex_free): GC thread (main thread) has failed to unlockmame
a mutex that is locked by another thread, which makes the mutex dangling in keeping_mutexes and causes [BUG] or stuck finally. Now unlocking is performed as locking thread. * thread.c (mutex_unlock, rb_mutex_unlock, rb_mutex_unlock_all): mutex_unlock receives a thread. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21105 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-27* process.c (after_exec): needs to reset before restart timernobu
thread. * thread.c (thread_start_func_2): stops timer thread if forked in the new thread. [ruby-core:19385] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-27* thread.c (rb_thread_atfork, rb_thread_atfork_before_exec): DRY.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-24* thread.c (thread_start_func_2): sets native thread key.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-22rdoc update.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-15* thread.c (sleep_timeval): cast tv_usec to long to shut upmatz
warnings on OSX. [ruby-dev:37449] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-10* thread.c (rb_mutex_unlock): shut up warning. a patch frommatz
Kazuhiro NISHIYAMA in [ruby-dev:37345]. fix #846 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-09* compile.c (iseq_compile_each), gc.c (assign_heap_slot),nobu
(gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add), proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all), (thread_start_func_2, blocking_region_begin, blocking_region_end), (rb_thread_kill), thread_pthread.c (native_thread_create), (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state), (vm_call0): use void pointer for %p. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-02move the previous comment.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-27* gc.c (ruby_stack_check): no check if using sigaltstack.nobu
* signal.c (register_sigaltstack): minimum size is insufficient for method calls. * signal.c (sigsegv): handles stack overflow if possible. * thread.c (ruby_thread_stack_overflow): helper function to raise sysstack_error. * thread_pthread.c (ruby_stack_overflowed_p): checks for stack overflow. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-24* process.c (rb_fork): stops the timer thread during fork.nobu
[ruby-dev:37117] * thread.c (rb_thread_start_timer_thread): timer thread needs system_working to be set. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-13* thread.c (rb_barrier_wait): gets rid of recursive deadlock.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-12* thread.c (rb_barrier_{new,wait,release,destroy}): use Mutex so thatnobu
circular requires fail with deadlock. [ruby-core:19821] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11* load.c (rb_require_safe): destroys barrier after successfullynobu
loaded, to get rid of loading same library again. [ruby-core:19798] * thread.c (rb_barrier_wait): can not wait destroyed barrier. * thread.c (rb_barrier_destroy): destroys barrier so that no longer waited. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-08* thread_pthread.c (thread_timer): checks working flags again.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06* thread.c (rb_thread_stop_timer_thread): terminates timer threadnobu
immediately. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-03* include/ruby/intern.h (rb_mutex_synchronize): fixed prototype.nobu
* thread.c (rb_mutex_synchronize): fixed function name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-26* thread.c (blocking_region_{begin,end}): declared as inline.nobu
* util.c (freedtoa): used only when MULTIPLE_THREADS is not defined. * win32/win32.c (rb_w32_pipe): serial is DWORD. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-08* thread.c (rb_thread_wait_fd_rw): should not block by select ifmatz
there's only one thread living. fixed [ruby-dev:36646]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-26* thread.c (thlist_signal): clears the woken thread if nothing woke.nobu
* thread.c (rb_barrier_wait): achieves the lock if no thread was waiting yet. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e