[#44586] [Ruby 1.9 - Bug #5423][Open] readlineの入力待機中に端末のウィンドウサイズ変更すると入力内容が乱れる — Takuto Matsuu <matsuu@...>

8 messages 2011/10/08

[#44589] [Ruby 1.9 - Bug #5429][Open] 64ビットなFreeBSDのioctlでビット31が1なリクエストの時の不具合 — Makoto Kishimoto <redmine@...>

21 messages 2011/10/09

[#44604] Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...>

ささださんが既にいくつか 2.0 関連のメールを投げていらっしゃいますが、

75 messages 2011/10/18
[#44612] Re: Ruby 2.0 release plan — Yusuke Endoh <mame@...> 2011/10/18

遠藤です。

[#44607] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44618] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/18

(2011/10/18 16:15), Yukihiro Matsumoto wrote:

[#44619] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44627] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

On 10/18/2011 10:16 PM, Yukihiro Matsumoto wrote:

[#44629] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/19

まつもと ゆきひろです

[#44631] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

たとえば2.0の次のバージョン番号はどうしますか?

[#44633] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/20

2011年10月20日3:31 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#44707] [ruby-trunk - Feature #5512][Open] Integer#/ の改訂 — tadayoshi funaba <redmine@...>

13 messages 2011/10/30

[#44719] [ruby-trunk - Feature #5520][Open] Numeric#exact?、Numeric#inexact? の追加 — tadayoshi funaba <redmine@...>

13 messages 2011/10/31

[ruby-dev:44688] [ruby-trunk - Bug #5475][Open] r33507以降SolarisでPTYが使えない

From: Naohisa Goto <ngotogenome@...>
Date: 2011-10-24 07:56:03 UTC
List: ruby-dev #44688
Issue #5475 has been reported by Naohisa Goto.

----------------------------------------
Bug #5475: r33507以降SolarisでPTYが使えない
http://redmine.ruby-lang.org/issues/5475

Author: Naohisa Goto
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 2.0.0dev (2011-10-24) [sparc-solaris2.10]


r33507以降、SolarisでPTYがまともに使えません。
 % ruby -rpty -e 'PTY.spawn("/bin/cat") { |r,w,id| p r; p w; p id }'
を実行すると、
 -e:1:in `spawn': can't get Master/Slave device (RuntimeError)
         from -e:1:in `<main>'
のようになります。

make test-all では、TestIO_ConsoleはほとんどのテストがSkipされてしまいます。
TestPTYも同様に多数のSkipおよび以下のErrorが出ます。一部を抜粋します。

  36) Skipped:
 test_echo(TestIO_Console) [/XXX/test/io/console/test_io_console.rb:171]:
 can't get Master/Slave device
(中略)
  46) Skipped:
 test_winsize(TestIO_Console) [/XXX/test/io/console/test_io_console.rb:171]:
 can't get Master/Slave device

 47) Skipped:
 test_argv0(TestPTY) [/XXX/test/test_pty.rb:49]:
 can't get Master/Slave device
(中略)
 80) Error:
 test_pty_check_default(TestPTY):
 RuntimeError: can't get Master/Slave device
    /XXX/test/test_pty.rb:170:in `spawn'
    /XXX/test/test_pty.rb:170:in `test_pty_check_default'
(以下略)

デバッガで追ってみると、ext/pty/pty.c:296 の grantpt(masterfd) が -1 となり、
errno は EACCES (Solaris10では13) でした。
そして、r33507で新規に導入された ext/pty/pty.c:294 の rb_fd_set_cloexec(masterfd); で masterfd に FD_CLOEXEC フラグを設定しているのが原因のようです。

Solarisでは、grantpt(3) 内部で /usr/lib/pt_chmod という setuid root されたヘルパープログラムを呼んでデバイスファイルのパーミッション設定を行っていますが、FD_CLOEXECをptyのmasterfdに設定すると、ヘルパープログラムを呼ぶ際に自動でcloseされてしまうため、ヘルパープログラムにclose済みのファイルデスクリプタが渡され、エラーになるのだろうと推測します。



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next