[#47033] [ruby-trunk - Bug #8749][Open] Readline.readline stops STDOUT? — "no6v (Nobuhiro IMAI)" <nov@...>
9 messages
2013/08/07
[#47036] Re: [ruby-trunk - Bug #8749][Open] Readline.readline stops STDOUT?
— Tanaka Akira <akr@...>
2013/08/07
2013/8/7 no6v (Nobuhiro IMAI) <nov@yo.rim.or.jp>:
[#47564] [ruby-trunk - Bug #8719][Open] r42096 make bm_app_factorial.rb slow — "authorNari (Narihiro Nakamura)" <authorNari@...>
4 messages
2013/08/02
[#47565] [ruby-trunk - Bug #8719] r42096 make bm_app_factorial.rb slow
— "authorNari (Narihiro Nakamura)" <authorNari@...>
2013/08/02
[#47569] [ruby-trunk - Feature #8726][Open] Class#source_location — "takiuchi (Genki Takiuchi)" <genki@...21g.com>
14 messages
2013/08/03
[#47574] Re: [ruby-trunk - Feature #8726][Open] Class#source_location
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/08/03
> Classオブジェクトが生成された場所を返す Class#source_location メソッドの実装を希望いたします。
[#47575] Re: [ruby-trunk - Feature #8726][Open] Class#source_location
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/08/03
> なるせさん、わたし、あのバックトレースの整形処理がイマイチ理解できんのだが、
[#47609] Re: [ruby-cvs:49669] naruse:r42527 (trunk): refix r42525 set stdio_file only if stdio — Tanaka Akira <akr@...>
2013/8/12 <naruse@ruby-lang.org>:
7 messages
2013/08/12
[#47610] Re: [ruby-cvs:49669] naruse:r42527 (trunk): refix r42525 set stdio_file only if stdio
— "NARUSE, Yui" <naruse@...>
2013/08/12
あぁ、[ruby-dev:47608]見てませんでした。
[#47611] Re: [ruby-cvs:49669] naruse:r42527 (trunk): refix r42525 set stdio_file only if stdio
— Tanaka Akira <akr@...>
2013/08/12
2013年8月12日 11:38 NARUSE, Yui <naruse@airemix.jp>:
[#47614] Re: [ruby-cvs:49669] naruse:r42527 (trunk): refix r42525 set stdio_file only if stdio
— "NARUSE, Yui" <naruse@...>
2013/08/12
editline の問題は、editlineにはrl_getcがなく、かつreadline.cで、
[#47620] Ruby 2.1 開発者会議 2013-08-31 のお知らせ — "NARUSE, Yui" <naruse@...>
かなり暑いですが、こんにちは。
5 messages
2013/08/14
[#47649] Re: [ruby-changes:30564] akr:r42643 (trunk): * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC. — SASADA Koichi <ko1@...>
akr さん
4 messages
2013/08/21
[#47650] Re: [ruby-changes:30564] akr:r42643 (trunk): * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.
— Tanaka Akira <akr@...>
2013/08/21
2013/8/21 SASADA Koichi <ko1@atdot.net>:
[#47663] Re: [ruby-core:56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "Akinori MUSHA" <knu@...>
At Fri, 30 Aug 2013 21:49:34 +0900,
6 messages
2013/08/30
[#47664] Re: [ruby-core:56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/08/30
MjAxMy84LzMwIEFraW5vcmkgTVVTSEEgPGtudUBpZGFlbW9ucy5vcmc+Og0KPiBBdCBGcmksIDMw
[ruby-dev:47036] Re: [ruby-trunk - Bug #8749][Open] Readline.readline stops STDOUT?
From:
Tanaka Akira <akr@...>
Date:
2013-08-07 23:05:03 UTC
List:
ruby-dev #47036
2013/8/7 no6v (Nobuhiro IMAI) <nov@yo.rim.or.jp>:
> Bug #8749: Readline.readline stops STDOUT?
> https://bugs.ruby-lang.org/issues/8749
> r42402 で、以下のようなスクリプトの挙動が変わっています。
> (Enter を押すかどうかは関係なくて、)Readline.readline を実行中に標準出力への出力が出来なくなっているように見えます。
うぅむ。Readline.readline が GVL を確保したままブロックしてしまって、
メインスレッドが進まなくなっているようです。
とりあえずもとのコードをなるべく保存するならこうかなぁ。
% svn diff --diff-cmd diff -x '-u -p'
Index: ext/readline/readline.c
===================================================================
--- ext/readline/readline.c (revision 42429)
+++ ext/readline/readline.c (working copy)
@@ -127,6 +127,7 @@ static char **readline_attempted_complet
*/
static VALUE readline_instream;
+static int readline_infd = -1;
static VALUE readline_outstream;
#if defined HAVE_RL_GETC_FUNCTION
@@ -143,7 +144,7 @@ readline_getc(FILE *input)
VALUE c;
if (!readline_instream) return rl_getc(input);
GetOpenFile(readline_instream, ifp);
- if (rl_instream != ifp->stdio_file) return rl_getc(input);
+ if (fileno(rl_instream) != readline_infd) return rl_getc(input);
#if defined(_WIN32)
{
INPUT_RECORD ir;
@@ -398,6 +399,7 @@ readline_readline(int argc, VALUE *argv,
rl_instream = NULL;
}
readline_instream = Qfalse;
+ readline_infd = -1;
rb_raise(rb_eIOError, "closed stdin");
}
}
@@ -467,6 +469,7 @@ clear_rl_instream(void)
}
}
readline_instream = Qfalse;
+ readline_infd = -1;
rl_instream = NULL;
}
}
@@ -504,6 +507,7 @@ readline_s_set_input(VALUE self, VALUE i
}
rl_instream = f;
readline_instream = input;
+ readline_infd = fd;
}
return input;
}
でも、readline_getc では単に GVL を外して rl_getc を呼べばいいのではないか、という気もします。
--
[田中 哲][たなか あきら][Tanaka Akira]
_______________________________________________
ruby-dev mailing list
ruby-dev@ruby-lang.org
http://lists.ruby-lang.org/cgi-bin/mailman/listinfo/ruby-dev