なひです.

> From: matz / ev.netlab.co.jp
> Sent: Monday, March 15, 1999 3:31 PM

> |60秒に一度保存するスレッドが走ってましたよね確か.
> |そいつからのExceptionだけは例外視するとか...
> 
> 例外を例外視するのはなかなか.^^;;;

うう...失礼しました.^^;

> 冗談はともかく,スレッド内部で例外が発生しちゃうとそのスレッ
> ドが黙ってなくなってしまうんです.これは仕様です.スレッドで
> はちゃんと例外を捕捉しましょう.

気を付けます(ハマる前でよかった ^^;).

スレッド内で捕まえれば平気なんですよね?
発生した瞬間にお亡くなりになってしまうわけでなく...

0> ruby -e 'Thread.start do; begin raise Exception; rescue; end; p "end"; end'
"end"
0> ruby -v
ruby 1.2.3(99/02/16) [sparc-solaris2.5.1]
0>

...良かった.(^_^;

> |signalは全員に飛んでくる(?)ので(?)仕方ない(?)
> 
> signalは
> 
>   SIGVTALRMは無視
>   SIGINTはmain threadに
>   後はそのときたまたま実行してた運の悪い奴に
> 
> 届きます.

解説ありがとうございます.POSIX threadと混同して
(というか,何も考えずに思い込んでしまって)いました.
気を付けます.

# もちろんpthreadでも,全員に一斉に(どうやるんだ)
# 飛んでくるわけではありませんね...^^;

> そーいえば SIGPIPE をどーにかしようと思ったきり忘れてた.
> どうするのが適切なんでしょうねえ.

これはどの話でしたでしょうか.
私がごちゃごちゃ言ってたヤツでしたっけ...

> From: matz / ev.netlab.co.jp
> Sent: Monday, March 15, 1999 3:58 PM

> |> あ〜,そこまで対処できるでしょうか.というかそこまで対処して
> |> るサーバがあるでしょうか? 特にdisk fullはUNIX系OSではほとん
> |> ど検出できないような気が….
> |
> |そうなんですかぁ。どこかにこういう問題に対するよいパターンが落ちてるん
> |じゃないかと期待してたんですがTT
> |
> |# よく出来たDBに投げる、というのもありだが(よく使う)
> 
> 無理なんじゃないでしょうか.非同期書き込みの関係でwrite(2)の
> 瞬間には検出できませんし,disk fullを通知するsignalもないの
> で.「良くできたDB」の raw disk に直接書き込みに行くタイプだ
> と検出できますね.

非同期書き込みの場合(*)を良く知らないのでなんとも言えませんが,
大抵の場合は,write(2)の戻り値を見張ってれば,
なんとかなりませんかね...

Rubyだと...io_syswriteから,SystemCallError? でしょうか?

# (*) 最近のSolarisでUFS loggingしてたりすると,
# write(2)の戻り値では検出できない? のでしょうか...
# すいません調べてません.

## ?が多くてすいません.適宜無視してください.m(..m