Actions
Bug #4943
closedtest/testunit/test_parallel.rb reports an Error on mswin/mingw
Description
1.9.3のcode freezeまでになんとかなる気がしてないので備忘録として。
- Error:
test_quit(TestParallel::TestParallelWorker):
Errno::EPERM: Operation not permitted
C:/Users/usa/ruby/test/testunit/test_parallel.rb:27:inkill' 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()時に既にエラーになるはずなので、
かなり奇妙な現象と言えます。
また、対象プロセスの死亡タイミングかなんかの問題かと思って遅延とか
リトライとかも試してみたのですが、回避に至ってはいません。
Actions
Like0
Like0