[#20392] [BigDecimal] proposal to change specification — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤と申します。

25 messages 2003/06/20
[#20407] Re: [BigDecimal] proposal to change specification — "Shigeo Kobayashi" <shigeo@...> 2003/06/22

小林です。

[#20447] [BigDecimal] renaming proposal — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

47 messages 2003/06/24
[#20621] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林@MAILチェック中です。

[#20628] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林です。

[ruby-dev:20464] Re: socket.writeでBUG

From: nobu.nakada@...
Date: 2003-06-26 16:03:04 UTC
List: ruby-dev #20464
なかだです。

At Mon, 16 Jun 2003 17:28:30 +0900,
so wrote:
> ハッキリしないのですが、
> socketすでに切断され、Bad file descriptorな状態
> になっているときsocket.writeをしようとすると、
> たまに例外でなくBUGが起こることがあるという感じです。
> スレッドも絡んでいるような気がします。

すいません。時間ができたら見ようと思ってて、忘れてました。

flushやcloseの中でスレッドが切り替わった後に、他のスレッドで同
じIOがクローズされていないか確認する必要があるようです。

たぶんこんな感じ。


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.217
diff -u -2 -p -r1.217 io.c
--- io.c	23 Jun 2003 14:55:08 -0000	1.217
+++ io.c	26 Jun 2003 15:58:13 -0000
@@ -302,5 +302,7 @@ io_fflush(f, fptr)
     int n;
 
-    rb_thread_fd_writable(fileno(f));
+    if (!rb_thread_fd_writable(fileno(f))) {
+        rb_io_check_closed(fptr);
+    }
     for (;;) {
 	TRAP_BEG;
@@ -1332,4 +1334,5 @@ fptr_finalize(fptr, noraise)
 		break;
 	    }
+	    if (!fptr->f2) break;
 	}
 	fptr->f2 = 0;
@@ -1340,4 +1343,5 @@ fptr_finalize(fptr, noraise)
 	    if (f2 != -1 || !(fptr->mode & FMODE_WBUF)) break;
 	    if (!rb_io_wait_writable(f1)) break;
+	    if (!fptr->f) break;
 	}
 	fptr->f = 0;



-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread