[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7184] Re: [PATCH] io.c: getc does not set errno?

From: matz@... (Yukihiro Matsumoto)
Date: 1999-06-23 03:56:48 UTC
List: ruby-dev #7184
まつもと ゆきひろです

In message "[ruby-dev:7172] [PATCH] io.c: getc does not set errno?"
    on 99/06/22, "NAKAMURA, Hiroshi" <nakahiro@sarion.co.jp> writes:

|どうやら以下のようなシナリオのようです.
|
|1. sleepする.
|2. poll中にSIGHUPを受信.
|3. 一度目のsignal handler処理.通常どおり行われる.
|4. signal handlerから帰ってきたところで,poll中のインタラプトということで,
|    errnoがEINTRにセットされる.
|5. 再びsleepする.
|6. poll中に二度目のSIGHUPを受信.
|7. 二度目のsignal handler処理.上記コードに飛び込み,読む読む.
|8. line: 633でgetcがEOFを返す.しかしこのマクロはerrnoをセットしない.
|   不幸にしてerrnoはEINTRのまま.
|9. line: 636の特例に引っかかってcontinue.延々繰り返す.

なるほどねえ。あと、errnoをスレッドローカルにするという手も
考えられますね。が、いずれにしてもこのパッチは採用しましょう。

|さて,ともかく,getcがerrnoを設定しない場合もあるんですよね.
|ferrorの時のみEINTR,でいいでしょうか?

getc()の割込みに関する挙動って結構未定義な気がします。

                                まつもと ゆきひろ /:|}

In This Thread

Prev Next