[#27711] Re: [ruby-list:41557] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

16 messages 2005/11/15
[#27717] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27718] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27719] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27720] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27721] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27722] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27723] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 小西 弘将 <konishih@...6.so-net.ne.jp> 2005/11/16

 小西 弘将です。

[#27735] FNM_CASEFOLD on case-sensitive system — nobuyoshi nakada <nobuyoshi.nakada@...>

なかだです。

15 messages 2005/11/18
[#27737] Re: FNM_CASEFOLD on case-sensitive system — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/18

山本です。

[#27758] File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org>

次に cygwin における

26 messages 2005/11/19
[#27768] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27769] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121093604.3A67.USA@garbagecollect.jp>,

[#27770] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27771] Re: File.dirname("///foo/bar/baz/qux") on cygwin — WATANABE Hirofumi <eban@...> 2005/11/21

わたなべです。

[#27772] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <1191-Mon21Nov2005112905+0900-eban@os.rim.or.jp>,

[#27773] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27774] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121120453.3A70.USA@garbagecollect.jp>,

[#27776] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <87ek5a665s.fsf@m17n.org>,

[#27777] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27778] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27779] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27781] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27782] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27783] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27766] 1.8.4 preview2? — "URABE Shyouhei aka.mput" <root@...>

卜部です。間が空きましたが

17 messages 2005/11/20
[#27798] Re: 1.8.4 preview2? — Yukihiro Matsumoto <matz@...> 2005/11/21

まつもと ゆきひろです

[#27818] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2005/11/25
[#27819] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — Yukihiro Matsumoto <matz@...> 2005/11/25

まつもと ゆきひろです

[#27821] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

こんにちは、なかむら(う)です。

[#27823] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

こんにちは、なかむら(う)です。

[#27839] ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org>

最近、boron でやっている chkbuild で ruby-1.8 が test-all 中

32 messages 2005/11/28
[#27862] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/28

山本です。

[#27911] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/01

In article <20051130210645.7228E2B0.ocean@m2.ccsnet.ne.jp>,

[#28046] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28048] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/19

In article <20051219120911.F876DDD0.ocean@m2.ccsnet.ne.jp>,

[#28050] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28057] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#27871] Numeric と Complex — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

37 messages 2005/11/29
[#27872] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

けいじゅ@いしつかです.

[#27873] Re: Numeric と Complex — Yukihiro Matsumoto <matz@...> 2005/11/29

まつもと ゆきひろです

[#27875] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

けいじゅ@いしつかです.

[ruby-dev:27729] Thread deadlock when signale handler raise exception

From: Tatsuki Sugiura <sugi@...>
Date: 2005-11-17 10:48:06 UTC
List: ruby-dev #27729
こんにちは。杉浦です。

いまいち絞れないのですが、デッドロックする状況を見つけました。
単に私のやり方が悪いのかもと思ったのですが、入出力を伴うと現象が変わる
と言う不思議な状況なので、多分バグだろうと言うことでレポートします。
整理できていないので長いですがご勘弁下さい。
ruby 1.8.4 (2005-10-29) [i486-linux] で確認しています。

以下の状況

 * スレッドが2つ以上あって
 * trap に exit するか、例外を起こすブロック(proc)を渡しておく

で、シグナルハンドラが呼ばれるとデッドロックしてしまいます。

最初に見つけたのは

------------------------------------------
require 'timeout'
require 'thread'

trap(:INT){
  puts "INT" # <===
  exit
}

timeout(3) { Queue.new.pop }
------------------------------------------

と言うコードです。これを実行して(3秒たつ前に)Ctrl+c を押すと、

sugi@tempest:~% ruby queue-timeout.rb
INT

で止まってずっと帰ってきません。もう一度 Ctrl+c を押すと、"INT" が
再度出力されてプロンプトに戻ります。

ところが # <=== の puts を削ると状況が変わります。

1回だけ Ctrl+c を押して暫く待つと、

sugi@tempest:~% ruby -v queue-timeout.rb
ruby 1.8.4 (2005-10-29) [i486-linux]
/usr/lib/ruby/1.8/timeout.rb:43: execution expired (Timeout::Error)
        from /usr/lib/ruby/1.8/timeout.rb:45:in `timeout'
        from /usr/lib/ruby/1.8/timeout.rb:62:in `timeout'
        from queue-timeout.rb:9

となってタイムアウトします。今度は2回 Ctrl+c を押して待つと、

sugi@tempest:~% ruby -v queue-timeout.rb
ruby 1.8.4 (2005-10-29) [i486-linux]
/usr/lib/ruby/1.8/timeout.rb:43:in `timeout': execution expired (Timeout::Error)        from queue-timeout.rb:9

と言うもう少し違うトレースを表示してタイムアウトします。
3回押すと何も表示せずに終了します。



もう少し単純な(ライブラリを使わない)コードだと、

------------------------------------------
require 'thread'

trap(:INT) {
  puts "INT" # <=== (1)
  exit
}

begin
  t = Thread.start { sleep }
  sleep
ensure
  # STDOUT.flush # <=== (2)
  t.kill # <=== (3)
end
------------------------------------------

は同じく Ctrl+c を1回押しても止まりません(2回で止まります)。

ところが、(1)〜(3) で示されている行をコメントアウトしたり
外したりすると色々状況が変わります。

以下の時は1回で止まります:

 * (1) と (2) と (3) を全部実行
 * (1) だけ実行
 * (1) と (2) を実行

2回必要なのは以下の時です:

 * (1) (2) (3) を全部コメントアウト
 * (2) だけ実行
 * (3) だけ実行
 * (1) と (3) を実行
 * (2) と (3) を実行



それから、2つのサンプルは exit を raise に変えても同じ状況に
なりますが、trap の中で

  trap(:INT) {
    Thread.new { Thread.pass; Thread.main.raise SystemExit }
  }
  
とするとどちらも Ctrl+c 1回で終了するようです。

また、trap :INT, "EXIT" ならすぐに終了します。

-- 
Tatsuki Sugiura   mailto:sugi@nemui.org

In This Thread

Prev Next