PR# 15273 System with several rescue clauses that violates precondition goes into infinite loop
Problem Report Summary
Submitter: prestoat2000
Category: EiffelBase
Priority: High
Date: 2009/01/14
Class: Bug
Severity: Critical
Number: 15273
Release: 6.3.76070
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.13) Gecko/20080328 Firefox/2.0.0.13
Solaris 10 on SPARC
Synopsis: System with several rescue clauses that violates precondition goes into infinite loop
Description
A particular system has precondition checking enabled for all classes, including classes of EiffelBase. The system includes several routines with rescue clauses but only the root creation procedure has a retry. The system compiles fine but when executed it goes into an infinite loop (when code is melted, frozen or finalized - doesn't matter). The infinite loop consumes CPU but memory size appears to be stable. Added eweasel test except033 for this bug. The test is currently marked "skip" in the catalog since the test will never finish due to the infinite loop. This is a very serious bug for us, because we run several of our most critical systems finalized but with all preconditions on (undetected errors can potentially be *very* expensive if something gets fabricated incorrectly, so we're fairly paranoid about error checking for some systems). If there is a small set of EiffelBase classes for which disabling precondition checking will prevent the problem, this might be an acceptable workaround.
To Reproduce
Run eweasel test except033 (after removing the "skip" tag in the catalog).
Problem Report Interactions
This has been fixed in the repository. (elks rev#264)
Thanks for the report, David. This is indeed a problem in `is_throwing'. I will soon commit the fix as long as tests run through.
I finalized the test case I previously provided and used dbx to discover that the infinite loop appears to be in {EXCEPTION}.is_throwing.