[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7079] Marshal::load

From: Shugo Maeda <shugo@...>
Date: 1999-06-04 06:17:39 UTC
List: ruby-dev #7079
前田です。

Marshal::loadでIOがブロックした時に、スレッドのスケジューリングが
起こらないためにデッドロックしてしまいます。

こんな感じでいかがでしょう?

--- marshal.c.orig      Fri Jun  4 15:06:23 1999
+++ marshal.c   Fri Jun  4 15:07:06 1999
@@ -457,7 +457,10 @@
 r_byte(arg)
     struct load_arg *arg;
 {
-    if (arg->fp) return getc(arg->fp);
+    if (arg->fp) {
+       rb_thread_wait_fd(fileno(arg->fp));
+       return getc(arg->fp);
+    }
     if (arg->ptr < arg->end) return *(unsigned char*)arg->ptr++;
     return EOF;
 }
@@ -531,6 +534,7 @@
     struct load_arg *arg;
 {
     if (arg->fp) {
+       rb_thread_wait_fd(fileno(arg->fp));
        len = fread(s, 1, len, arg->fp);
     }
     else {

# ほんとはwriteの時も要るかも。

-- 
前田 修吾

In This Thread

Prev Next