[#12763] NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 2001/04/04
[#12765] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/04

Yukihiro Matsumotoさんの

[#12767] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/04

まつもと ゆきひろです

[#12787] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12789] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12790] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12792] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12838] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/10

Yukihiro Matsumotoさんの

[#12795] recursive malloc / fork deadlock / thread deadlock — "Akinori MUSHA" <knu@...>

 添付のスクリプトで、いくつかのプラットフォームで問題が発生する

43 messages 2001/04/07
[#12799] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/07

まつもと ゆきひろです

[#12801] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/08

なかだです。

[#12802] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12822] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/09

なかだです。

[#12827] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12836] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12840] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12852] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12854] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12857] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12859] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12862] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/10

ごとうゆうぞうです。

[#12866] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12878] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12888] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12892] Re: recursive malloc / fork deadlock / thread deadlock — Takahiro Kambe <taca@...> 2001/04/12

完全に理解せずに書いています。

[#12895] Re: recursive malloc / fork deadlock / thread deadlock — Jun Adachi <adachi@...> 2001/04/12

安達@沖データと申します。

[#12898] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/12

ごとうゆうぞうです。

[#12830] 1.6.4 preview — "Akinori MUSHA" <knu@...>

 そろそろ FreeBSD 4.3-RELEASE 前の ports のフリーズが迫っている

23 messages 2001/04/09
[#12844] Re: 1.6.4 preview — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12921] ObjectSpace.each_object(Symbol) — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

23 messages 2001/04/13
[#12923] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12928] Re: ObjectSpace.each_object(Symbol) — Hisayasu Nakao <h-nakao@...> 2001/04/13

中尾@富士通です。

[#12929] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12934] Re: ObjectSpace.each_object(Symbol) — keiju@... (石塚圭樹) 2001/04/13

けいじゅ@日本ラショナルソフトウェアです.

[#12941] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[ruby-dev:12977] Re: recursive malloc / fork deadlock / thread deadlock

From: GOTOU Yuuzou <gotoyuzo@...>
Date: 2001-04-16 23:35:10 UTC
List: ruby-dev #12977
ごとうゆうぞうです。

In message <86oftyng8i.wl@archon.local.idaemons.org>,
 `"Akinori MUSHA" <knu@iDaemons.org>' wrote:
> At Mon, 16 Apr 2001 02:07:52 +0900,
> GOTOU Yuuzou wrote:
> おお。以前のパッチは忘れてよいのでしょうか。ぜひ取り込んでほしい
> ですね。

あああ、すみません。freopen のが 抜けてました。やっぱ
り [ruby-dev:12914] のほうがいいです。(fptr->f2 の分は
余計でしたが)
調子が悪くて集中力を欠いた状態で始めてしまって恥ずかし
いミスを連発してしまいましたが、これで仕舞いにします。
何度も何度も本当にすみません。

> Solaris もこれで大丈夫なのでしょうか。

malloc が再入しているというメッセージは出ずに
SIGSEGV/SIGBUS で死んでしまうのですが、発生しなくなっ
たようです。

>  あとは fork したまま固まる問題ですね。

Ruby と直接関係ないのですが、これは FreeBSD の
problem report に上がっている bin/25110 と同じみたいで
す。

  http://www.jp.FreeBSD.org/cgi/query-pr.cgi?pr=25110

まだ試していませんが、fork する前に一旦シグナルマスク
をクリアとして、親でのみリストアするようにすればスレッ
ド内で単に exec するケースについては解決するように思い
ます。
しかし、子プロセス側でシグナルが使いものにならなくなる
ようなので、今のところは --without-libc_r をデフォルト
にするのが無難かもしれません。

# sigaltstack(2) を自前で呼べばなんとかなるとか。

$ cat fork_and_sig.rb 
pid = fork{
  trap("TERM"){ puts "handler called!"; exit! }
  while true; end
}
sleep(1)
Process.kill("TERM", pid)
puts "waitpid start"
Process.waitpid(pid)
puts "waitpid end"

$ LD_PRELOAD=/usr/lib/libc.so ruby fork_and_sig.rb
waitpid start
handler called!
waitpid end                                    # ちゃんと終る
$ 
$ ruby fork_and_sig.rb 
waitpid start                                  # 終らないのでCtrl-C
^Cfork_and_sig.rb:8:in `waitpid': Interrupt
        from fork_and_sig.rb:8
$ ps
  PID  TT  STAT      TIME COMMAND
  590  p0  DWs    0:01.62 -bash (bash)
16159  p0  MW     0:05.38 ruby fork_and_sig.rb
16160  p0  RW+    0:00.00 ps
 8022  p1  DWs+   0:00.94 -bash (bash)
$ kill -QUIT 16159
$ ps                
  PID  TT  STAT      TIME COMMAND
  590  p0  DWs    0:01.63 -bash (bash)
16159  p0  MW     0:30.80 ruby fork_and_sig.rb
16162  p0  RW+    0:00.00 ps
 8022  p1  DWs+   0:00.94 -bash (bash)
$ kill -9 16159

--
ごとうゆうぞう

--- io.c.orig	Tue Apr 17 05:35:01 2001
+++ io.c	Tue Apr 17 05:56:20 2001
@@ -1379,6 +1379,10 @@
 	    rb_sys_fail(fname);
 	}
     }
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(sun)
+    if (setvbuf(file, NULL, _IOFBF, 0) != 0)
+	rb_warn("setvbuf() can't be honered for %s.", fname);
+#endif
 #ifdef __human68k__
     fmode(file, _IOTEXT);
 #endif
@@ -1402,6 +1406,10 @@
 	    rb_sys_fail(0);
 	}
     }
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(sun)
+    if (setvbuf(file, NULL, _IOFBF, 0) != 0)
+	rb_warn("setvbuf() can't be honered (fd=%d).", fd);
+#endif
     return file;
 }
 
@@ -1925,6 +1933,10 @@
     if (freopen(RSTRING(fname)->ptr, mode, fptr->f) == 0) {
 	rb_sys_fail(fptr->path);
     }
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(sun)
+    if (setvbuf(fptr->f, NULL, _IOFBF, 0) != 0)
+	rb_warn("setvbuf() can't be honered for %s.", RSTRING(fname)->ptr);
+#endif
     if (fptr->f2) {
 	if (freopen(RSTRING(fname)->ptr, "w", fptr->f2) == 0) {
 	    rb_sys_fail(fptr->path);

In This Thread