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()時に既にエラーになるはずなので、
かなり奇妙な現象と言えます。
また、対象プロセスの死亡タイミングかなんかの問題かと思って遅延とか
リトライとかも試してみたのですが、回避に至ってはいません。
Updated by usa (Usaku NAKAMURA) over 13 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r32426.
Usaku, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- win32/win32.c (kill): check the process exited or not before
teminationg it. [Bug #4943]
Actions
Like0
Like0