[#11131] Re: SIGINT on windows — Daisuke Aoki <dai@...>

青木です。

36 messages 2000/10/04
[#11217] Re: SIGINT on windows — Daisuke Aoki <dai@...> 2000/10/14

青木です。

[#11250] Re: SIGINT on windows — Daisuke Aoki <dai@...> 2000/10/16

青木です。

[#11258] Re: SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/10/17

なかだです。

[#11298] Re: SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/10/27

なかだです。

[#11183] EPOC32 and Ruby 1.7 — WATANABE Hirofumi <eban@...>

わたなべです.

44 messages 2000/10/12
[#11188] Re: EPOC32 and Ruby 1.7 — matz@... (Yukihiro Matsumoto) 2000/10/12

まつもと ゆきひろです

[#11191] ruby-bugs-ja PR#20 — Kazuhiro NISHIYAMA <zn@...> 2000/10/12

On Fri, 13 Oct 2000 00:17:14 +0900

[#11205] Re: ruby-bugs-ja PR#20 — Kazuhiro NISHIYAMA <zn@...> 2000/10/13

同じ問題を短いスクリプトで再現できました。

[#11210] Re: Thread.new with irb (PR#20) — matz@... (Yukihiro Matsumoto) 2000/10/13

まつもと ゆきひろです

[#11211] Re: Thread.new with irb (PR#20) — Kazuhiro NISHIYAMA <zn@...> 2000/10/13

On Sat, 14 Oct 2000 03:41:18 +0900

[#11221] Re: Thread.new with irb (PR#20) — Kazuhiro NISHIYAMA <zn@...> 2000/10/14

[ruby-dev:11205]と同じスクリプトで-dをつけていると

[#11306] Ruby I18N — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

130 messages 2000/10/28
[#11307] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/10/28

たけ(tk)です。

[#11310] Re: Ruby I18N — kenn@... 2000/10/29

長沢です。

[#11314] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/10/29

まつもと ゆきひろです

[#11315] Re: Ruby I18N — Shugo Maeda <shugo@...> 2000/10/30

前田です。

[#11324] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/10/30

高橋征義です。

[#11337] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/10/30

At Mon, 30 Oct 2000 13:15:23 +0900,

[#11346] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/10/31

某2ちゃんねるで自分の名前を見つけてびびった高橋征義です。

[#11347] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/10/31

まつもと ゆきひろです

[#11370] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/11/02

高橋征義です。

[#11372] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/02

まつもと ゆきひろです

[#11375] Re: Ruby I18N — TAKAHASHI Masayoshi <maki@...> 2000/11/04

高橋征義です。

[#11378] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/11/05

たけ(tk)です。

[#11379] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/05

まつもと ゆきひろです

[#11380] Re: Ruby I18N — " たけ (tk)" <ggb03124@...> 2000/11/05

たけ(tk)です。

[#11382] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/05

まつもと ゆきひろです

[#11393] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。 ・・ 長文ご注意。

[#11396] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11397] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/11/07

At Tue, 7 Nov 2000 15:46:29 +0900,

[#11398] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11399] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/07

In article <E13t3dt-0002Fp-00@ev.netlab.zetabits.co.jp>,

[#11401] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/07

まつもと ゆきひろです

[#11404] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。

[#11406] Re: Ruby I18N — Yasushi Shoji <yashi@...> 2000/11/07

At Tue, 7 Nov 2000 19:06:27 +0900,

[#11407] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/07

たけ(tk)です。

[#11409] Re: Ruby I18N — Minero Aoki <aamine@...> 2000/11/07

あおきです。

[#11423] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/08

In article <E13t4Hq-0002GS-00@ev.netlab.zetabits.co.jp>,

[#11426] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11427] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/08

In article <E13tMYW-0002te-00@ev.netlab.zetabits.co.jp>,

[#11428] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11430] Re: Ruby I18N — "たけ(tk)" <ggb03124@...> 2000/11/08

たけ(tk)です。

[#11433] Re: Ruby I18N — matz@... (Yukihiro Matsumoto) 2000/11/08

まつもと ゆきひろです

[#11446] 『文字列は文字の配列か』 — " たけ (tk)" <ggb03124@...> 2000/11/08

たけ(tk)です。

[#11470] Proposal of "Array of CharCode" — " たけ (tk)" <ggb03124@...> 2000/11/10

たけ(tk)です。

[#11471] Re: Proposal of "Array of CharCode" — matz@... (Yukihiro Matsumoto) 2000/11/10

まつもと ゆきひろです

[#11450] Re: Ruby I18N — Tanaka Akira <akr@...17n.org> 2000/11/09

In article <E13tNkT-00030l-00@ev.netlab.zetabits.co.jp>,

[ruby-dev:11150] Re: SIGINT on windows

From: nobu.nakada@...
Date: 2000-10-09 22:20:15 UTC
List: ruby-dev #11150
なかだです。

  遅くなりました。金曜の夜にいきなり会津塩川とか遊びに行っちゃっ
たりしたもんで。

At Sat, 7 Oct 2000 00:27:29 +0900,
Daisuke Aoki <dai@sweetparty.ne.jp> wrote:
> > > Windows 95 だと ReadFile() 時の Ctrl-C の処理に限って
> > > CriticalSection がらみでタイミング上のデッドロックが生じます。
> > > LeaveCriticalSection() の後に Sleep(0) を入れるとちょっとは大丈夫に
> > > なりますが。
> >   Sleep(0) でマシになるということは、デッドロックというよりは
> > signal thread に CPU を食われてしまって処理が進まない、というこ
> > とでしょうか。
> メインスレッドで win32_call_handler() で
>  SetEvent(h->handshake) した後、シグナルスレッドに処理が移って
> win32_main_context() の WaitForSingleObject(interrupt_done, INFINITE)
> が終わって、 次の RUBY_CRITICAL() の EnterCriticalSection() で
> 待機中に、メインスレッドに処理が移らないでデッドロックが生じて
> いるようです。SetThreadContext() により何かおかしくなってこうなる
> のではないかと思いますが、原因と動作自体も不明です。

  Sleep(0) で「ちょっとは大丈夫」というのはどのくらいでしょう。
大体大丈夫になるとか、ないと全然だけどあればたまにうまく行くこ
ともあるとか。

> とにかく、win32_main_context() の2番目の RUBY_CRITICAL() で
> 頻繁にデッドロックが生じます。デバッグのために、printf とか入れると
> デッドロックしないなったりします。
> LeaveCriticalSection() の後に Sleep(0) というのは、かなり
> パフォーマンスに影響を与えるので採用できませんし。

  win32_disable_interrupt() に Sleep(0) を入れてしまうと相当に
遅くなるようです。signal 処理中だけにして win32_main_context()
と win32_call_handler() の RUBY_CRITICAL() の後だけ Sleep(0) す
るようにするのではうまくいかないんでしたっけ。

> > > あんま長い処理を CriticalSection の機構で挟むこと
> > > 自体ちょっと・・・(^^;;
> >   えー、だって OS 自体クリティカルなんだもん(笑)。
> 長く何が起こるかわからない処理の場合は Semaphore の方がまだ安全
> なので。私が CriticalSection を好きでないという理由でしかない
> かもしれませんが、一応腸、書いておくと、
> CriticalSectionを所持していないスレッドが LeaveCriticalSection()
> するとその後に、EnterCriticalSection() するとデッドロックになるとか、
> CriticalSectionを所持しているスレッドが解放せずに死ぬと、
> Win9x 系では CriticalSection は所持したままになるとか・・・
> もう回避できない問題ありっまくり(^^)

  このへんは使う側のバグもありますよね、基本的には。それに現状
の Ruby では main thread 以外は signal thread だけなはずなので
何とかなりそうな気がしますが。

> > > 後、sleep 時(win32_sleep())に Ctrl-C すると
> > > 致命的な状況になります。
> >   これは以前出た CPU 食いまくり状態と同じでしょうか。NT だと
> > ruby -e sleep でもきちんと rescue までできるんですがねぇ。
> 違います。完全に OS が逝っちゃいます(^^) 詳細は不明ですが
> これはデバッグできないので(^^;;;
> SIGINT を trap して sleep しているときに Ctrl-C で全画面モードで
> エラー表示、そのままお亡くなりになられます> Windows 95

  これは Win95 のバグなのかなぁ、signal thread から SetEvent()
できないというわけではなさそうだし…。ていうか同期処理すらでき
なかったら signal あっても何の役にも立たないし。具体的にどこま
でいって落ちるとかは分からないでしょうか。

> >   最初そうしてたんですけど(めんどくさかったから)、マルチプログ
> > ラミングにはロックの粒度を下げた方がパフォーマンス的にはメリッ
> > トがあるのでは。と思ったけど、結局今のところ native thread とし
> > ては単一なのでデメリットにしかなりませんか。
> ちょっと起動が遅くなったんではないかなと思ったものでして。
> 致命的な状況を回避するためならいいんですが、trap を使用している
> とき(デフォルトの signal の処理にすぐ exit() する場合以外)だけ、
> EnterCriticalSection() というのでもいいと思います。

  若干遅くなってる可能性はあります、たしかに。しかし基本的に
malloc() が HeapAlloc() を呼んでたりする以上、クリティカルなの
は間違いないようです。GC が起きていると思われるときに Ctrl+C す
ると落ちるというのがなくなりましたし、現に。

> >   考えてみたら #ifdef NT で Windows 95 まで括り込もうというのが
> > 根本的に間違ってるような気もして来ました。
> > #if defined(NT)
> > #elif defined(WIN95)
> > #endif
> > という形にならなきゃおかしいのかも、そもそも。
> #if ではなくて、
> if(IsWin95()){ or if(IsWinNT()){
> } else {
> }
> という感じがいいのではないでしょうか。

  そうですね。たしかに動的な判断でないとまずいかも。

> NT の方で落ち着いたら
> この点について私が作業しますという感じで(ここまで踏み込んだので
> しなければいけないかなということで(;_;)。その場合、一応、私が
> 作業するのに一週間ぐらい掛かると見込んでください。ただ、sleep 時の
> 問題が私に解決できるのかは自身がありません(^^;;

  一応私が作業してる NT4.0 SP5 では落ち着いてますんで、心置きな
くどうぞ(^^)。

> >   多くの unixen ではソースレベルの互換性はあるけどバイナリ互換
> > 性はない。Windowses ではバイナリフォーマットの互換性はあるけど
> > ソースレベルの互換性はない、とか。
> バイナリは一緒にしておく方がベターだと思います。NT 版と 9x 版を
> バイナリを分けて使用するのは、ユーザーとしても面倒でしょう。
> 問題は、SIGINT だけなんですし。

  NT と 95/98 は全く別個の OS だと思うんですが、半端にバイナリ
互換なところが却って厄介というか迷惑というか。

> #ひょっとして、うちが NEC Windows 95 だということがちと問題
> #だったりすると嫌ですねぇ(^^;;;;

  他の Windows 環境(NT 系 / 9x 系ともに)での動作状況が知りたい
とこです。

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

In This Thread