merges r30743 from trunk into ruby_1_9_2.

--
	* thread.c (thread_start_func_2): check deadlock condition before
	  release thread stack. fix memory violation when deadlock detected.
	  reported by Max Aller. [Bug #4009] [ruby-core:32982]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@31202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2011-03-28 13:40:56 +00:00
parent 4ed5cda951
commit 67db9280bf
3 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,9 @@
Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
* thread.c (thread_start_func_2): check deadlock condition before
release thread stack. fix memory violation when deadlock detected.
reported by Max Aller. [Bug #4009] [ruby-core:32982]
Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp> Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
* lib/irb/locale.rb (IRB::Locale::#search_file): * lib/irb/locale.rb (IRB::Locale::#search_file):

View file

@ -512,13 +512,14 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s
join_th = join_th->join_list_next; join_th = join_th->join_list_next;
} }
thread_unlock_all_locking_mutexes(th);
if (th != main_th) rb_check_deadlock(th->vm);
if (!th->root_fiber) { if (!th->root_fiber) {
rb_thread_recycle_stack_release(th->stack); rb_thread_recycle_stack_release(th->stack);
th->stack = 0; th->stack = 0;
} }
} }
thread_unlock_all_locking_mutexes(th);
if (th != main_th) rb_check_deadlock(th->vm);
if (th->vm->main_thread == th) { if (th->vm->main_thread == th) {
ruby_cleanup(state); ruby_cleanup(state);
} }

View file

@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.2" #define RUBY_VERSION "1.9.2"
#define RUBY_PATCHLEVEL 185 #define RUBY_PATCHLEVEL 186
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1 #define RUBY_VERSION_TEENY 1