summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-10 04:32:22 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-10 04:32:22 +0000
commit9883632d6ad6dec664047df38f8098ef46963bb0 (patch)
tree09d9a80759af2081bfa13858f70583c2b6f37184 /thread.c
parenta46e21c86fd2be677d7565c501160f1ce638f81b (diff)
thread.c: stop if forked in a sub-thread
* thread.c (thread_start_func_2): stop if forked in a sub-thread, the thread has become the main thread. [ruby-core:62070] [Bug #9751] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/thread.c b/thread.c
index dfa91a827b..61cf3a1a03 100644
--- a/thread.c
+++ b/thread.c
@@ -569,6 +569,9 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s
thread_debug("thread end: %p\n", (void *)th);
main_th = th->vm->main_thread;
+ if (main_th == th) {
+ ruby_stop(0);
+ }
if (RB_TYPE_P(errinfo, T_OBJECT)) {
/* treat with normal error object */
rb_threadptr_raise(main_th, 1, &errinfo);