[#44904] [ruby-trunk - Bug #5688][Open] Solaris10 で spawn を繰り返すとメモリリークする — okkez _ <redmine@...>

14 messages 2011/11/29

[ruby-dev:44892] method redefined warning depends GC?

From: Tanaka Akira <akr@...>
Date: 2011-11-20 00:44:25 UTC
List: ruby-dev #44892
test-all を -w をつけて動かしたときに、
  TC_Enumerable#test_to_set = (eval):2: warning: method redefined;
discarding old initialize
  /extdisk/chkbuild/chkbuild/tmp/build/ruby-trunk/20111119T160600Z/ruby/lib/set.rb:613:
warning: previous definition of initialize was here
という警告が出たり出なかったりすることで気がついたのですが、以下のプログラムの、
GC.start の有無で警告が出るか出ないか変わります。

以下のように、GC.start を呼ばない場合、警告が出ません。

% ./ruby -w -e '
class C
  def m() end
  alias m2 m
  remove_method :m2
  #GC.start
  def m() end
end
'

以下のように、GC.start を呼ぶ場合、警告が出ます。

% ./ruby -w -e '
class C
  def m() end
  alias m2 m
  remove_method :m2
  GC.start
  def m() end
end
'
-e:7: warning: method redefined; discarding old m
-e:3: warning: previous definition of m was here

これはそういうものなんでしょうか?

% ./ruby -v
ruby 2.0.0dev (2011-11-19 trunk 33791) [x86_64-linux]
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next