[#3587] Multiple assignment at yield() — Shin-ichro Hara <sinara@...>
原です。
86 messages
1998/11/17
[#3588] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/17
まつもと ゆきひろです
[#3589] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/17
原です。
[#3590] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/17
まつもと ゆきひろです
[#3594] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/18
原です。
[#3595] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/18
まつもと ゆきひろです
[#3596] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/18
原です。
[#3598] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/19
まつもと ゆきひろです
[#3600] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/20
原です。
[#3610] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/20
原です。
[#3611] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3622] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/21
原です。
[#3630] Re: Multiple assignment at yield()
— shugo@... (MAEDA Shugo)
1998/11/22
前田です。
[#3635] Re: Multiple assignment at yield()
— Shin-ichiro Hara <sinara@...>
1998/11/23
原です。
[#3658] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/24
まつもと ゆきひろです
[#3660] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/24
原です。
[#3663] Re: Multiple assignment at yield()
— matz@... (Yukihiro Matsumoto)
1998/11/25
まつもと ゆきひろです
[#3667] Re: Multiple assignment at yield()
— Shin-ichro Hara <sinara@...>
1998/11/25
原です。
[#3722] multiple assignment, yield and return
— Shin-ichro Hara <sinara@...>
1998/12/01
原です。
[#3725] Re: multiple assignment, yield and return
— shugo@... (MAEDA Shugo)
1998/12/01
前田です。
[#3724] Re: multiple assignment, yield and return
— Shin-ichro Hara <sinara@...>
1998/12/01
原です。
[#3742] List()
— Shin-ichro Hara <sinara@...>
1998/12/04
原です。
[#3743] Re: List()
— shugo@... (MAEDA Shugo)
1998/12/06
前田です。
[#3744] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/06
原です。
[#3755] Re: List()
— shugo@... (MAEDA Shugo)
1998/12/07
前田です。
[#3758] Re: List()
— Shin-ichro Hara <sinara@...>
1998/12/07
原です。
[#3760] Re: List()
— shugo@... (MAEDA Shugo)
1998/12/07
前田です。
[#3761] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/07
原です。
[#3774] Re: List()
— shugo@... (MAEDA Shugo)
1998/12/08
前田です。
[#3780] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/08
原です。
[#3784] Re: List()
— shugo@... (MAEDA Shugo)
1998/12/09
前田です。
[#3788] Re: List()
— Shin-ichro Hara <sinara@...>
1998/12/09
原です。
[#3789] Re: List()
— MAEDA Shugo <shugo@...>
1998/12/10
前田です。
[#3790] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/10
原です。
[#3791] Re: List()
— MAEDA Shugo <shugo@...>
1998/12/10
前田です。
[#3793] Re: List()
— Shin-ichiro Hara <sinara@...>
1998/12/12
原です。
[#3797] Re: List()
— matz@... (Yukihiro Matsumoto)
1998/12/14
まつもと ゆきひろです
[#3602] problem of Delegator — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
17 messages
1998/11/20
[#3605] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3606] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3607] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3612] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3613] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3618] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3619] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/20
まつもと ゆきひろです
[#3620] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/20
けいじゅ@日本ラショナルソフトウェアです.
[#3647] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/24
まつもと ゆきひろです
[#3652] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/24
けいじゅ@日本ラショナルソフトウェアです.
[#3653] Re: problem of Delegator
— matz@... (Yukihiro Matsumoto)
1998/11/24
まつもと ゆきひろです
[#3655] Re: problem of Delegator
— keiju@... (石塚圭樹 )
1998/11/24
けいじゅ@日本ラショナルソフトウェアです.
[#3621] Time object memory leak? — Masaki Fukushima <fukusima@...>
福嶋と申します。
6 messages
1998/11/21
[#3626] block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo)
前田です。
47 messages
1998/11/22
[#3628] Re: block local variable (Re: スコープの範囲)
— Koji Arai <JCA02266@...>
1998/11/22
新井です。
[#3629] Re: block local variable (Re: スコープの範囲)
— shugo@... (MAEDA Shugo)
1998/11/22
前田です。
[#3632] Re: block local variable (Re: スコープの範囲)
— Koji Arai <JCA02266@...>
1998/11/22
新井です。
[#3633] Re: block local variable (Re: スコープの範囲)
— shugo@... (MAEDA Shugo)
1998/11/22
前田です。
[#3636] Re: block local variable (Re: スコープの範囲)
— Shin-ichiro Hara <sinara@...>
1998/11/23
原です。
[#3642] Re: block local variable (Re: スコープの範囲)
— Koji Arai <JCA02266@...>
1998/11/23
新井です。
[#3645] Re: block local variable(Re: スコープの範囲)
— Shin-ichiro Hara <sinara@...>
1998/11/23
原です。
[#3674] Re: block local variable(Re: スコープの範囲)
— Koji Arai <JCA02266@...>
1998/11/25
新井です。
[#3678] Re: block local variable(Re: スコープの範囲)
— matz@... (Yukihiro Matsumoto)
1998/11/26
まつもと ゆきひろです
[#3681] Re: block local variable(Re: スコープの範囲)
— Kazuhiro HIWADA <hiwada@...>
1998/11/26
ひわだです。
[#3682] Re: block local variable(Re: スコープの範囲)
— Shin-ichro Hara <sinara@...>
1998/11/26
原です。
[#3683] Re: block local variable(Re: スコープの範囲)
— matz@... (Yukihiro Matsumoto)
1998/11/26
まつもと ゆきひろです
[#3684] Re: block local variable(Re: スコープの範囲)
— Shin-ichro Hara <sinara@...>
1998/11/26
原です。
[#3685] Re: block local variable(Re: スコープの範囲)
— matz@... (Yukihiro Matsumoto)
1998/11/26
まつもと ゆきひろです
[#3686] nested method? (Re: block local variable)
— shugo@... (MAEDA Shugo)
1998/11/26
前田です。
[#3687] Re: nested method? (Re: block local variable)
— Kazuhiro HIWADA <hiwada@...>
1998/11/26
ひわだです。
[#3689] Re: nested method? (Re: block local variable)
— shugo@... (MAEDA Shugo)
1998/11/27
前田@大阪大学です。
[#3690] Re: nested method? (Re: block local variable)
— Kazuhiro HIWADA <hiwada@...>
1998/11/27
ひわだです。
[#3692] Re: [ruby-list:11096] Re: MacRuby — Wakou Aoyama <wakou@...>
青山です。
10 messages
1998/11/27
[#3698] Re: [ruby-list:11096] Re: MacRuby
— shugo@... (MAEDA Shugo)
1998/11/29
前田です。
[#3699] Re: [ruby-list:11096] Re: MacRuby
— Wakou Aoyama <wakou@...>
1998/11/29
青山です。
[#3703] Re: [ruby-list:11096] Re: MacRuby
— Shin-ichro Hara <sinara@...>
1998/11/30
原です。
[#3707] new delegator — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
6 messages
1998/11/30
[#3709] ruby-1.1c9 install 中に SEGV — Koji Arai <JCA02266@...>
新井です。
18 messages
1998/11/30
[#3876] Re: ruby-1.1c9 install 中に SEGV
— Koji Arai <JCA02266@...>
1998/12/20
新井です。
[#3883] Re: ruby-1.1c9 install 中に SEGV
— matz@... (Yukihiro Matsumoto)
1998/12/22
まつもと ゆきひろです
[#3965] Re: ruby-1.1c9 install 中に SEGV
— Koji Arai <JCA02266@...>
1998/12/24
新井です。
[ruby-dev:3701] [BUG?] fork(2) and read(2)
From:
WATANABE Tetsuya <tetsu@...>
Date:
1998-11-30 00:22:53 UTC
List:
ruby-dev #3701
渡辺です。
以下のような現象がでているので検討ください。
今朝会社で試したら、かなり転送サイズを大きくしないと再現し
ませんでした。
Pentium II 266MHz では
------------------------------
msg = '0123456789' * 100 * 32 * 2
0.upto(1000) do
c.request(msg)
end
------------------------------
です。自宅のシステムは Pentium 166MHz です。
■ 現象
fork した場合、socket で通信中に子プロセスが、SIGVTALRM で
終了してしまう。
ソケットを使用した通信のスクリプトに fork と setsid でデー
モンプロセスになるように設定する。fork を使用する前は、正
常に動作していたスクリプトが、fork することで動作しなくな
る。
症状としては、通信中に中途半端なところで中断してしまう。
strace(1) などのツールを使って確認してみたところ、fork(2)
後 setitimer(2) でインターバルタイマの初期化が行われ、シグ
ナルハンドラが設定されていないため中断していることがわかる。
process.c を確認したら、Linux のシステムだけが
setitimer(2) (after_exec())していることに気がつきパッチを
作成。
■ 環境
Linux 2.0.36 glibc-2.0.7 (TurboLinux 2.0J)
Ruby 1.1c9
■ 再現スクリプト
udp のポートとして 22222 使います。空いているとは思います
が、一応確認してください(netstat -a で)。
もしかすると速い CPU では、udp で送るメッセージをもっと大
きくしないと再現しないかもしれません。というのは、メッセー
ジを受けとる read(2) 中にインターバルタイマを受けて落ちる
のが現象のためです。インターバルタイマで呼ばれる前に
read(2) が終了してしまうと現象は起きないと思います。
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/bug/fork.rb
# Created: November 29,1998 Sunday 05:25:13
# Author: tetsu(WATANABE Tetsuya)
# $Id$
# usage:
require 'socket'
class Ssample
def initialize
@udp = UDPsocket.open
@udp.bind('localhost', 22222)
@from = nil
end
def request
ret = @udp.recvfrom(32 * 1024, 0)
@from = ret[1]
ret[0]
end
def reply(msg)
@udp.send(msg, 0, *@from)
end
end
class Csample
def initialize
@udp = UDPsocket.open
@udp.connect('localhost', 22222)
end
# server module
def request(msg)
@udp.send(msg, 0)
ret = @udp.recvfrom(32 * 1024, 0)
@from = ret[1]
ret[0]
end
end
if Process.fork
# p
sleep 1
c = Csample.new
print c.request('msg'), "\n"
msg = '0123456789' * 100
0.upto(100) do
c.request(msg)
end
print c.request('EXIT'), "\n"
else
# c
s = Ssample.new
while msg = s.request
s.reply(msg)
break if msg == 'EXIT'
end
end
exit
■ 実行方法
$ strace -f ruby fork.rb 2> strace.txt
■ 結果
省略
[pid 3119] sendto(4, "01234567890123456789012345678901"...,
1000, 0, {sin_family=AF_INET, sin_port=htons(1115),
sin_addr=inet_addr("127.0.0.1")}, 16) = 1000
[pid 3119] --- SIGVTALRM (Virtual time alarm) ---
[pid 3119] +++ killed by SIGVTALRM +++
<... send resumed> ) = 1000
--- SIGCHLD (Child exited) ---
省略
子プロセスが、SIGVTALRM にて終了してしまっています。
■ パッチ
fork(2) の後で、どうして Linux だけが特別扱いになっている
のか私には理由がわからないので、もしかするとこのパッチはま
ずいかもしれません。
処理に問題がなければ、このパッチを採用してください。
--- process.c.org Tue Oct 6 11:45:00 1998
+++ process.c Sun Nov 29 06:30:04 1998
@@ -543,9 +543,6 @@
rb_secure(2);
switch (pid = fork()) {
case 0:
-#ifdef linux
- after_exec();
-#endif
if (iterator_p()) {
rb_yield(Qnil);
_exit(0);
■ ということで
socket でサービスするデーモンのスクリプトを書いて、一通り
の処理ができるようになったので、デーモンにすべく fork と
setsid を呼びだしました。そしたら、長いメッセージの場合中
途半端なところでプロセスが死んでしまって、処理がうまく行き
ません。「あれ?」ということで...
p.s. E-mail がたくさんたまっている月曜日は大変ですね。
まつもとさん。
--
WATANABE Tetsuya HP Japan
e-mail Tetsuya_WATANABE@hp.com
tetsu@jpn.hp.com