summaryrefslogtreecommitdiff
path: root/thread.c
AgeCommit message (Collapse)Author
2010-04-28* thread. (rb_thread_terminate_all): revert r24591 which caused SEGVmame
sometimes. [ruby-dev:40936] [ruby-core:27245] [ruby-core:27416] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-28* thread.c (timer_thread_function): unused variable.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-27* eval.c (ruby_cleanup): before cleanup, check signal buffer and runmame
handler if any. [ruby-core:20970] * thread.c (rb_threadptr_check_signal): separeted from timer_thread_function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-19* thread.c (rb_thread_blocking_region, rb_thread_blocking_region_end):mame
preserve errno. [Bug #2606] [ruby-core:28924] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-15* thread.c (rb_thread_priority, rb_thread_priority_set): fix rdoc.mame
Lower-priority thread may run even if there are higher-priority threads. See [ruby-dev:40977]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-06 * vm_core.h: Introduce UNINITIALIZED_VAR() macro.kosaki
* thread.c (do_select): Use UNINITIALIZED_VAR() instead FAKE_FD_ZERO(). Also, remove FAKE_FD_ZERO completely. [Feature #3018] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-25* thread.c (thread_reset_event_flags): set flags to thread.wanabe
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-24* thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VMmame
of event_flags. [ruby-core:25191] * thread.c (rb_threadptr_exec_event_hooks): delete RUBY_EVENT_VM if all event_hooks are removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-25* thread.c (do_select): wrong conditions. [ruby-core:27753]usa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-23* thread.c (thread_start_func_2): unlock all locking mutexesnobu
before clean up. [ruby-core:26877] * thread.c (rb_thread_atfork): no other threads to be joined. * vm_core.h (rb_thread_lock_unlock, rb_thread_lock_destroy): new functions. * vm.c (ruby_vm_destruct): unlock and destroy global VM lock. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-05removes the dtrace support. reverts r26239, r26238 and r26235.yugui
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-04* gc.c: added UNLIKELY to probes for optimization.yugui
* vm.c: ditto. * thread.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-03* trace.h: new file. wraps tracing mechanisms.yugui
* defs/dtrace.d: new file. defined a dtrace provider "ruby". * include/ruby/ruby.h (LIKELY): moved from vm.c. (UNLIKELY): ditto. (OBJSETUP): probe "object-create". (RUBY_EVENT_RESCUE): new event. * vm_exec.c (DEBUG_ENTER_INSN): embeded a probe insn-entry into it. (DEBUG_END_INSN): insn-return. * vm.c (LIKELY): moved into ruby.h. (UNLIKELY): ditto. (Init_BareVM): embeded a probe "raise" into it. * variable.c (rb_class2name_without_alloc): new utility function. * tool/rbinstall.rb (install?(:ext, :arch, :'ext-arch')): installs dtrace.d if necessary. * thread_pthread.c (add_signal_thread_list): probe "raise". (rb_thread_create_timer_thread): ditto. * thread.c (rb_thread_schedule_rec): probes "thread-enter" and "thread-leave", (thread_start_func_2): ditto. (thread_cleanup_func): probe "thread-term" * lib/mkmf.rb: supports dtrace postprocessor on making an extension. * iseq.c (rb_vm_insn_name): new utility function. (rb_vm_insn_len): ditto. * insns.def (hook): probes "method-etnry", "method-return", "line", and "rescue". * compile.c (iseq_compile_each): adds a trace op for "rescue" probe. * gc.c (garbage_collect): probes "gc-begin" and "gc-end". (obj_free): probe "object-free" (garbage_collect_with_gvl): probe "raise" (negative_size_allocation_error): ditto. (rb_memerror): ditto. * eval.c (rb_rescue2): probe "rescue" (rb_longjmp): probe "raise" * ext/probe/probe.c: new extension for application defined probes. * ext/probe/extconf.rb: ditto. * configure.in (--with-tracing-model): new option to choose a tracing mechanism. (DTRACE): new substitution. name of dtrace(1). (RUBY_TRACING_MODEL): new substitution. (DTRACE_OBJ): ditto. (MINIDTRACE_OBJ): ditto. (GOLFDTRACE_OBJ): ditto. (LIBRUBY_DTRACE_OBJ): ditto. (RUBY_DTRACE_POSTPROCESS): new macro. checks whether the dtrace on the system needs postprocessing. (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether the dtrace supports USDT. * Makefile.in: (DTRACE): new variable. name of dtrace(1). (TRACING_MODEL): new variable. name of the chosen tracing mechanism. (DTRACE_OBJ): same as the one in configure.in. (MINIDTRACE_OBJ): ditto. (GOLFDTRACE_OBJ): ditto. (LIBRUBY_DTRACE_OBJ): ditto. (CPPOUTFILE): new substitution. necessary for generating dtrace.d (trace_none.h): new target for TRACING_MODEL=none (RUBY_H_INCLUDES): appended a header for tracing. (distclean-local): also removes preprocessed version of dtrace.d ($(LIBRUBY_A)): needs $(LIBRUBY_DTRACE_OBJ) if dtrace needs postprocessing. ($(PROGRAM)): ditto. (golf): ditto. (miniruby): ditto. ($(arch_hdrdir)/ruby/dtrace.d): new target. preprocessed verson of defs/dtrace.d. generated if necessary. ($(arch_hdrdir)/ruby/trace_dtrace.h): new target. definition of probes. ($(LIBRUBY_DTRACE_OBJ)): new target. generated if dtrace needs postprocessing. ($(DTRACE_OBJ)): ditto. ($(MINIDTRACE_OBJ)): ditto. ($(GOLFDTRACE_OBJ)): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-13doc fix: mutex.lock => self [ruby-core:27115]naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-18* thread.c (rb_thread_atfork_internal): reinitialize global locknobu
at fork to get rid of deadlock. based on the patch from Hongli Lai in [ruby-core:26783]. [ruby-core:26361] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-18* thread.c (terminate_atfork_i): all mutex locks by other threadsnobu
have been abandoned at fork. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-15* thread.c (thread_cleanup_func): delete locking_mutex when threadmame
object become dummy because of fork. [ruby-core:26744] [ruby-core:26745] * bootstraptest/test_thread.rb: add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-13* thread.c (thread_start_func_2): see first_func, not first_proc,nobu
to decide which to use. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-12* thread.c (thread_create_core): moved failure handling fromnobu
native_thread_core(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-10* thread.c (blocking_region_begin): define before BLOCKING_REGION.akr
reported by Luis Lavena. [ruby-core:26670] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-09* thread.c (rb_gc_save_machine_context): don't save the stack pointerakr
in this function. (RB_GC_SAVE_MACHINE_CONTEXT): call rb_gc_save_machine_context and save the stack pointer at caller side. (rb_thread_schedule_rec): use RB_GC_SAVE_MACHINE_CONTEXT instead of rb_gc_save_machine_context. (blocking_region_begin): changed to a macro. use RB_GC_SAVE_MACHINE_CONTEXT instead of rb_gc_save_machine_context. [ruby-dev:39659] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-03fix typos.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-02* thread_{pthread,win32}.c (native_stop_timer_thread): join the threadusa
here. * thread_{pthread,win32}.c (native_reset_timer_thread): new function. * thread.c (rb_thread_stop_timer_thread, rb_thread_reset_timer_thread): call above function instead of simply seting 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-30* thread.c (rb_thread_blocking_region): reverted r25566, and addednobu
description that no exception is allowed inside `func', instead. see [ruby-dev:39582] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-30* thread.c (rb_thread_blocking_region): standard C doesn't acceptusa
preprosessing directive within macro expansion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-30* thread.c (rb_thread_blocking_region): must ensure to unlock GVL.nobu
[ruby-dev:39579] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-12* thread.c: Revert changes to Thread#raise made in r25278 [ruby-core:25367]marcandre
* eval_intern.h: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-11* thread.c: Doc fix for Thread#raisemarcandre
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-10* eval.c (rb_threadptr_errinfo): renamed.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-10* thread.c (rb_threadptr_execute_interrupts_rec, rb_threadptr_raise): ↵marcandre
Thread#raise with no argument will now re-raise the current exception if there is one [ruby-core:25367] * eval.c (get_errinfo, rb_rubylevel_thread_errinfo): Getter for current exception for a given thread git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-02* thread.c (ruby_suppress_tracing): get rid of clobbering bynobu
longjmp. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-21* compile.c, cont.c, gc.c, insns.def, iseq.c, iseq.h, process.c,nobu
thread.c, vm.c, vm_core.h, vm_dump.c, vm_eval.c, vm_insnhelper.c, vm_method.c, template/insns_info.inc.tmpl, tool/instruction.rb: fixed types. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-17* thread.c: added rdocs.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-17* thread.c (rb_thread_s_debug_set): set level, not only boolean.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-15* thread.c (rb_exec_recursive_outer, rb_exec_recursive): Added method to ↵marcandre
short-circuit to the outermost level in case of recursion * test/ruby/test_thread.rb (test_recursive_outer): Test for above * hash.c (rb_hash_hash): Return a sensible hash for in case of recursion [ruby-core:24648] * range.c (rb_range_hash): ditto * struct.c (rb_struct_hash): ditto * array.c (rb_array_hash): ditto * test/ruby/test_array.rb (test_hash2): test for above git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-13* thread.c (thread_list_access): prototyped.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-13* thread.c (recursive_*): refactored the access to the inspect table used bymarcandre
rb_exec_recursive_*. The functions recursive_push, pop and check now assume a valid hash table as their first argument. Added documentation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-09* thread.c (thgroup_data_type, mutex_data_type, barrier_data_type):nobu
typed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-08* include/ruby/st.h (st_hash_func): use st_index_t.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-30Revert wrong commit r24715 "* thread.c (do_select): suppress warnings."naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-30* thread.c (do_select): suppress warnings.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-28 * thread.c (do_select): rollback r24680. void struct initializer isusa
invalid. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-26* thread.c (do_select): suppress warnings.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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