From: Usaku NAKAMURA Date: 2011-06-29T13:43:45+09:00 Subject: [ruby-dev:43990] [Ruby 1.9 - Bug #4943][Assigned] test/testunit/test_parallel.rb reports an Error on mswin/mingw Issue #4943 has been reported by Usaku NAKAMURA. ---------------------------------------- Bug #4943: test/testunit/test_parallel.rb reports an Error on mswin/mingw http://redmine.ruby-lang.org/issues/4943 Author: Usaku NAKAMURA Status: Assigned Priority: Low Assignee: Usaku NAKAMURA Category: core Target version: 1.9.x ruby -v: ruby 1.9.3dev (2011-06-29 trunk 32282) [x64-mswin64_100] 1.9.3のcode freezeまでになんとかなる気がしてないので備忘録として。 1) Error: test_quit(TestParallel::TestParallelWorker): Errno::EPERM: Operation not permitted C:/Users/usa/ruby/test/testunit/test_parallel.rb:27:in `kill' C:/Users/usa/ruby/test/testunit/test_parallel.rb:27:in `rescue in teardown' C:/Users/usa/ruby/test/testunit/test_parallel.rb:20:in `teardown' で、別にparallel testが悪いわけではなくて、なぜかProcess.killができないのが 問題なのですが、ミニマム再現ケースを作れない(つまり普段は成功する)ので 悩み中です。 なお、このテストに関しては95%くらいの再現率です(つまり稀には通る)。 細かく分解すると、win32/win32.cのkill()内で、OpenProcess()に成功した後で TerminateProcess()がERROR_ACCESS_DENIEDとなっています。 普通は権限が足りなければOpenProcess()時に既にエラーになるはずなので、 かなり奇妙な現象と言えます。 また、対象プロセスの死亡タイミングかなんかの問題かと思って遅延とか リトライとかも試してみたのですが、回避に至ってはいません。 -- http://redmine.ruby-lang.org