From: noreply@... Date: 2006-08-03T01:01:37+09:00 Subject: [ ruby-Bugs-5267 ] exception loss Bugs item #5267, was opened at 2006-08-02 12:00 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=5267&group_id=426 Category: None Group: 1.8.x Status: Open Resolution: None Priority: 3 Submitted By: Stephen Anderson (sja) Assigned to: Nobody (None) Summary: exception loss Initial Comment: Ruby processes intermitently fail to terminate when signalled. The trap declared in these ruby scripts simply raises an exception and the exception is somehow lost. A simple demonstration setup consists of a exception handler script (handleException.rb) that creates a thread whose job is to wake up every 10s and count to 1 million. The testcase is driven by another script (testException.rb) whose job is to fork handleException.rb, wait approximately ten seconds, then kill the subprocess. If the process dies with 2s the testcase passes. Otherwise the testcase fails and the teardown tries to kill the subprocess again. I have seen this testcase complete successfully once (success is deemed as 4000 repetitions), however it was just luck as subsequent runs of exactly the same code failed after a few hundred repetitions. Some of the things we have tried to fix this problem: - Change the exception raised to Interrupt instead of SystemExit. - Make the signal handler a critical section. - Move the signal handler declaration into a class. We have never observed the signal being lost. This is raised as a high priority problem #458 on our bug tracking system as our daemon processes in a clustered environment cannot reliably be killed. ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=5267&group_id=426