diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-31 03:10:07 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-31 03:10:07 +0000 |
commit | 0b0b2445fd9222483deb0b382b40d90f8c621837 (patch) | |
tree | 813d68b48b4967d5f0e0fadc8e9386cb49a5e85a /eval.c | |
parent | ed2f7f70570fd7ec43633a20932256d32be6454f (diff) | |
download | ruby-0b0b2445fd9222483deb0b382b40d90f8c621837.tar.gz |
2000-05-31
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -6635,6 +6635,9 @@ rb_thread_fd_close(fd) static void rb_thread_deadlock() { + if (curr_thread == main_thread) { + rb_raise(rb_eFatal, "Thread: deadlock"); + } curr_thread = main_thread; th_raise_argc = 1; th_raise_argv[0] = rb_exc_new2(rb_eFatal, "Thread: deadlock"); @@ -6877,17 +6880,17 @@ rb_thread_schedule() curr_thread->file = ruby_sourcefile; curr_thread->line = ruby_sourceline; FOREACH_THREAD_FROM(curr, th) { - fprintf(stderr, "deadlock 0x%lx: %d:%d %s - %s:%d:\n", + fprintf(stderr, "deadlock 0x%lx: %d:%d %s - %s:%d\n", th->thread, th->status, th->wait_for, th==main_thread?"(main)":"", th->file, th->line); } END_FOREACH_FROM(curr, th); - rb_thread_deadlock(); next = main_thread; - rb_thread_ready(next); next->gid = 0; + rb_thread_ready(next); next->status = THREAD_TO_KILL; + rb_thread_deadlock(); } if (next->status == THREAD_RUNNABLE && next == curr_thread) { return; |