mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* gc.c (mem_error): prohibit recursive mem_error().
(ruby-bugs-ja:PR#36) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2cafd39ed2
commit
4c1441870e
2 changed files with 28 additions and 2 deletions
21
ChangeLog
21
ChangeLog
|
@ -1,3 +1,22 @@
|
||||||
|
Fri Dec 29 11:41:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* gc.c (mem_error): prohibit recursive mem_error().
|
||||||
|
(ruby-bugs-ja:PR#36)
|
||||||
|
|
||||||
|
Fri Dec 29 11:05:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval.c (rb_thread_fd_writable): should not switch context if
|
||||||
|
rb_thread_critical is set.
|
||||||
|
|
||||||
|
* eval.c (rb_thread_wait_fd): ditto.
|
||||||
|
|
||||||
|
* eval.c (rb_thread_wait_for): ditto.
|
||||||
|
|
||||||
|
* eval.c (rb_thread_select): ditto.
|
||||||
|
|
||||||
|
* eval.c (rb_thread_join): join during critical section causes
|
||||||
|
deadlock.
|
||||||
|
|
||||||
Tue Dec 26 18:46:41 2000 NAKAMURA Hiroshi <nakahiro@sarion.co.jp>
|
Tue Dec 26 18:46:41 2000 NAKAMURA Hiroshi <nakahiro@sarion.co.jp>
|
||||||
|
|
||||||
* lib/debug.rb: Avoid thread deadlock in debugging stopped thread.
|
* lib/debug.rb: Avoid thread deadlock in debugging stopped thread.
|
||||||
|
@ -116,7 +135,7 @@ Tue Dec 19 13:44:50 2000 K.Kosako <kosako@sofnec.co.jp>
|
||||||
|
|
||||||
Tue Dec 19 00:57:10 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Tue Dec 19 00:57:10 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* time.c (time_minus): usec might overflow (ruby-bugs-ja:#PR#35).
|
* time.c (time_minus): usec might overflow. (ruby-bugs-ja:PR#35)
|
||||||
|
|
||||||
* eval.c (rb_obj_extend): Object#extend should take at least one
|
* eval.c (rb_obj_extend): Object#extend should take at least one
|
||||||
argument.
|
argument.
|
||||||
|
|
9
gc.c
9
gc.c
|
@ -53,10 +53,17 @@ static void
|
||||||
mem_error(mesg)
|
mem_error(mesg)
|
||||||
char *mesg;
|
char *mesg;
|
||||||
{
|
{
|
||||||
|
static int recurse = 0;
|
||||||
|
|
||||||
if (rb_safe_level() >= 4) {
|
if (rb_safe_level() >= 4) {
|
||||||
rb_raise(rb_eNoMemError, mesg);
|
rb_raise(rb_eNoMemError, mesg);
|
||||||
}
|
}
|
||||||
rb_fatal(mesg);
|
if (recurse == 0) {
|
||||||
|
recurse++;
|
||||||
|
rb_fatal(mesg);
|
||||||
|
}
|
||||||
|
fprintf(stderr, "[FATAL] failed to allocate memory\n");
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
|
Loading…
Reference in a new issue