Forum: Ruby-dev [Closed] Error in TestEnv#test_memory_leak_* on Solaris

F1d6cc2b735bfd82c8773172da2aeab9?d=identicon&s=25 Nobuyoshi Nakada (nobu)
on 2014-07-08 09:59
(Received via mailing list)
Issue #10010 has been updated by Nobuyoshi Nakada.

Status changed from Feedback to Closed
% Done changed from 0 to 100

Applied in changeset r46755.

----------
memory_status.rb: find proper ps

* test/ruby/memory_status.rb (Memory::PSCMD): use ps command which
  outputs expected result.  [ruby-dev:48370] [Bug #10010]

----------------------------------------
Bug #10010: Error in TestEnv#test_memory_leak_* on Solaris
https://bugs.ruby-lang.org/issues/10010#change-47641

* Author: Naohisa Goto
* Status: Closed
* 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'

~~~
This topic is locked and can not be replied to.