[ruby-dev:48374] [ruby-trunk - Bug #10010] [Feedback] Error in TestEnv#test_memory_leak_* on Solaris
From:
nobu@...
Date:
2014-07-06 16:19:27 UTC
List:
ruby-dev #48374
Issue #10010 has been updated by Nobuyoshi Nakada.
Status changed from Open to Feedback
これでどうでしょう。
見つからなかったときにどうするか悩ましいですが。
~~~diff
diff --git a/test/ruby/memory_status.rb b/test/ruby/memory_status.rb
index f8e097a..ef973ee 100644
--- a/test/ruby/memory_status.rb
+++ b/test/ruby/memory_status.rb
@@ -82,7 +82,17 @@ module Memory
end
end
else
- PSCMD = ["ps", "-ovsz=","-orss=", "-p"]
+ ps = ENV["PATH"].split(File::PATH_SEPARATOR).find {|path|
+ next if path.empty?
+ ps = File.join(path, "ps")
+ begin
+ st = File.stat(ps)
+ rescue
+ else
+ break ps if st.file? and st.executable?
+ end
+ }
+ PSCMD = [ps, "-ovsz=","-orss=", "-p"]
PAT = /^\s*(\d+)\s+(\d+)$/
keys << :size << :rss
~~~
----------------------------------------
Bug #10010: Error in TestEnv#test_memory_leak_* on Solaris
https://bugs.ruby-lang.org/issues/10010#change-47608
* Author: Naohisa Goto
* Status: Feedback
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* Category:
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0dev (2014-07-04) [sparc64-solaris2.10]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
r46550 くらい以降、Solaris 10 にて make test-all 中、以下のエラーが発生します。
(r44686 にて確認)
test/envutil.rb の 438行目にて、:size や :rss 用の情報が、OS側の何らかの理由で示されず、その結果ハッシュにも格納されず、 a または b が nil になることがあるのに、それに対応していないのが原因と思います。
なお、Solaris では、/proc/self/status は struct pstatus_t の内容のバイナリを返しますが、それには全く対応していないので、nil になるか、偶然バイナリ値が何かに一致した場合にでたらめな値が返されるかのいずれかになります。
~~~
53) Error:
TestEnv#test_memory_leak_shift:
NoMethodError: undefined method `>' for nil:NilClass
/XXXXX/test/ruby/envutil.rb:438:in `block in assert_no_memory_leak'
/XXXXX/test/ruby/envutil.rb:435:in `each'
/XXXXX/test/ruby/envutil.rb:435:in `assert_no_memory_leak'
/XXXXX/test/ruby/test_env.rb:543:in `test_memory_leak_shift'
54) Error:
TestEnv#test_memory_leak_select:
NoMethodError: undefined method `>' for nil:NilClass
/XXXXX/test/ruby/envutil.rb:438:in `block in assert_no_memory_leak'
/XXXXX/test/ruby/envutil.rb:435:in `each'
/XXXXX/test/ruby/envutil.rb:435:in `assert_no_memory_leak'
/XXXXX/test/ruby/test_env.rb:525:in `test_memory_leak_select'
55) Error:
TestEnv#test_memory_leak_aset:
NoMethodError: undefined method `>' for nil:NilClass
/XXXXX/test/ruby/envutil.rb:438:in `block in assert_no_memory_leak'
/XXXXX/test/ruby/envutil.rb:435:in `each'
/XXXXX/test/ruby/envutil.rb:435:in `assert_no_memory_leak'
/XXXXX/test/ruby/test_env.rb:514:in `test_memory_leak_aset'
~~~
--
https://bugs.ruby-lang.org/