PR# 3500 PANIC after complex rescue/retry
Problem Report Summary
Submitter:
Category: Compiler
Priority: Medium
Date: 2003/08/06
Class: Bug
Severity: Serious
Number: 3500
Release: 5.4.0403
Confidential: No
Status: Open
Responsible:
Environment: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461)
Synopsis: PANIC after complex rescue/retry
Description
Manu,
I was trying to reproduce the code 16 error (Resumption attempt failed). Instead I got a PANIC. Since the code shown below is a lot like my code which generates the code 16 this may (or may not) be related. This is a completely reproducible problem.
Randy
======================================================
test.exe: PANIC: unexpected harmful signal ...
test.exe: system execution failed.
Following is the set of recorded exceptions.
NB: The raised panic may have induced completely inconsistent information:
-------------------------------------------------------------------------------
Class / Object Routine Nature of exception Effect
-------------------------------------------------------------------------------
ROOT_CLASS user_initialization @4 unexpected harmful signal:
<0000000000BD0048> Eiffel run-time panic. Panic
-------------------------------------------------------------------------------
ROOT_CLASS user_initialization @4
<0000000000BD0048> Routine failure. Panic
-------------------------------------------------------------------------------
ROOT_CLASS make @1
<0000000000BD0048> Routine failure. Panic
-------------------------------------------------------------------------------
ROOT_CLASS root's creation
<0000000000BD0048> Routine failure. Bye
-------------------------------------------------------------------------------
Press Return to finish the execution...
======================================================
class ROOT_CLASS
inherit
EXCEPTIONS
creation
make
feature
make is
do
user_initialization
end
user_initialization is
do
-- Melt this routine to get a slightly different error.
if update_windows_in_progress
then
request_update_windows := True
else
update_windows_in_progress := True
xyzzy
-- xyzzy
end
rescue
update_windows_in_progress := False
request_update_windows := False
retry
end
xyzzy is
do
user_initialization
-- user_initialization
if request_update_windows
then
raise("test")
end
rescue
foo
end
foo is
local
l_retry: BOOLEAN
do
if not l_retry
then
raise("sldk")
end
rescue
l_retry := True
retry
end
request_update_windows: BOOLEAN
update_windows_in_progress: BOOLEAN
end
To Reproduce
Problem Report Interactions