[#28230] bcc32 memory manager — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2006/01/18

[#28243] FUNCTION_CALL_MAY_RETURN_TWICE — Hajimu UMEMOTO <ume@...>

梅本です。

18 messages 2006/01/20

[#28270] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2006/01/23
[#28271] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28272] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — WATANABE Hirofumi <eban@...> 2006/01/23

わたなべです。

[#28273] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28274] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/24

山本です。

[#28275] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "U.Nakamura" <usa@...> 2006/01/24

こんにちは、なかむら(う)です。

[#28286] SEGV with zlib — Tanaka Akira <akr@...17n.org>

最近、Data オブジェクトの free 関数が気になっているのですが、

24 messages 2006/01/30
[#28303] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28304] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもと ゆきひろです

[#28305] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28306] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28307] Re: SEGV with zlib — Tietew <tietew-ml-ruby-dev@...> 2006/02/06

[#28308] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもとゆきひろです。

[ruby-dev:28243] FUNCTION_CALL_MAY_RETURN_TWICE

From: Hajimu UMEMOTO <ume@...>
Date: 2006-01-20 05:10:42 UTC
List: ruby-dev #28243
  梅本です。

  FreeBSD の ports に最近

	http://www.freebsd.org/cgi/cvsweb.cgi/ports/lang/ruby18/files/patch-eval.c?rev=1.3&content-type=text/x-cvsweb-markup

というパッチが追加されたのですが、それ以降、xcgroup が落ちるようになっ
たと報告を受けました。

	/usr/local/lib/ruby/1.8/timeout.rb:52: [BUG] Segmentation fault ruby 1.8.4 (2005-12-24) [i386-freebsd6]

  ちなみに、patch-eval.c が追加される直前の ports では問題なく動作して
いました。

# xcgroup は、XCAST6 (http://sourceforge.net/projects/xcast6/) のグルー
# プを管理するプログラムです。マイナーなプログラムで申し訳ありません。
#
#    http://cvs.sourceforge.net/viewcvs.py/xcast6/xcgroup/

  FreeBSD の ports に patch-eval.c が入った時の commit log には

	Fix build on sparc64

とあるのですが、パッチを見ると、FUNCTION_CALL_MAY_RETURN_TWICE を追加
する部分が、sparc64 以外の arch にも影響しています。

  patch-eval.c と同等の修正が Ruby の Repo. にも入っています。

	http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/eval.c.diff?r1=1.870;r2=1.871


  http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003731.html
から始まるスレッドを見ると、

	http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003739.html

で投稿されている元々のパッチでは FUNCTION_CALL_MAY_RETURN_TWICE を 
getcontext(&(j)->context), の前から後にずらしているだけだったのが、
amd64 ではダメだということで、getcontext() の前後に加えるように変更さ
れ、Ruby Repo. に commit されたようです。

  試しに、更に

Index: eval.c
diff -u -p eval.c.orig eval.c
--- eval.c.orig	Fri Jan 20 12:35:30 2006
+++ eval.c	Fri Jan 20 12:37:05 2006
@@ -166,7 +166,6 @@ int function_call_may_return_twice_false
 #endif
 #define ruby_longjmp(env, val) rb_jump_context(env, val)
 #define ruby_setjmp(j) ((j)->status = 0, \
-    FUNCTION_CALL_MAY_RETURN_TWICE, \
     getcontext(&(j)->context), \
     FUNCTION_CALL_MAY_RETURN_TWICE, \
     (j)->status)



という変更を加えたところ、問題なく xcgroup が動作するようになりました。
どうやら、getcontext() の前後に加えると、i386 で問題があるようです。
FUNCTION_CALL_MAY_RETURN_TWICE をどこに入れるか、arch 毎に分けないとい
けないように思うのですが、いかがでしょうか?

-- 
梅本 肇 @ インターネット互助会横浜  http://www.imasy.org/~ume/
ume@mahoroba.org  ume@{,jp.}FreeBSD.org
プログラムは書いた人の意図ではなく書かれた通り動く  I hate Modula-3 :-)

In This Thread

Prev Next