[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

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

From: "Nobuyoshi.Nakada" <nobu.nakada@...>
Date: 2000-11-16 03:59:55 UTC
List: ruby-dev #11554
なかだです。

At Wed, 15 Nov 2000 23:31:53 +0900
> 止まってしまう時の状況をちゃんと調べてみました。
> 
> SIGNAL: win32_main_context() の1番目の RUBY_CRITICAL に入る。
> MAIN:   win32_enter_syscall() の win32_disable_interrupt() で止まる。
>           SuspendThread() で止まっていないケース。
> SIGNAL: win32_main_context() で MAIN を SetThreadContext() で操作。MAIN が動く。
> SIGNAL: win32_main_context() の1番目の RUBY_CRITICAL から出る。
> MAIN:   win32_call_hander() の RUBY_CRITICAL に入る。
> MAIN:   win32_call_hander() の RUBY_CRITICAL から出る。
> SIGNAL: win32_main_context() の2番目の RUBY_CRITICAL に入ろうとするが止まる。
> 
> という感じで、EnterCriticalSection() で止まっているスレッドに、
> SetThreadContext() で操作しているしたのが原因?で win32_enter_syscall() の
> win32_disable_interrupt() で CriticalSection を獲得してないはずなのになぜか
> 獲得したことになってて、win32_main_context() の2番目の RUBY_CRITICAL に入ることが
> できずデッドロックしてしまうみたいです。

  あーなるほど。EnterCriticalSection()も Win95 では中断不可のシステムコー
ルだということですね。自前で同期してやるしかありませんか、やっぱり。

  しかし、今のコードだと SetThreadContext() されるときというのはほとんど 
Sleep(1) の中になると思うんですが、Sleep() は中断しても大丈夫なんでしょ
うか。WaitFor* が大丈夫なら結構手だてはありそうなんですが…。

> で、2行目の MAIN: win32_enter_syscall() の win32_disable_interrupt() がないケースでは
> デッドロックしていません。これは、rb_io_gets() 内のような win32_leave_syscall() の
> 後に win32_enter_syscall() がすぐ呼ばれるようなケースで起きやすいです。

  win32_leave_syscall() で実行を許可された SIGNAL の方が、MAIN が 
win32_enter_syscall() に入るより先に SuspendThread() してるんでしょうね、
これは。

> 前、win32_main_context() で SetThreadContext() 使って操作する前に、
> メインスレッドで win32_enable_interrupt() でトップレベルまで戻ったときに、
> ループで止めるという仕組みをつくって試したことがあったのですが、最終的にはそういうことを
> しないと同期 API で止まっている状況を完全に防ぐことはできなさそうですね。

  トップレベルまで戻るというのは?

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


In This Thread