PR# 14740 Serious hang in EiffelStudio debugger when debugging EiffelStudio
Problem Report Summary
Submitter: manus_eiffel
Category: Debugger
Priority: Medium
Date: 2008/08/19
Class: Bug
Severity: Serious
Number: 14740
Release: 6.3.7.4182
Confidential: No
Status: Suspended
Responsible:
Environment: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
Synopsis: Serious hang in EiffelStudio debugger when debugging EiffelStudio
Description
I could not reproduce it on a small project, but if you update `C_STRING.read_substring_into' with this incorrect function and execute EiffelStudio I was expecting to get a precondition violation in the call to `put_code' with the call to `area.put' which violates its precondition. Instead EiffelStudio targets the feature relation tool to `STRING_8.put_code' and then hangs (the call stack tool is empty with `Status = Explicit exception pending' and the objects tools is blank). After a while it responds and if I evaluate some arguments it works. But still can't do much since I cannot navigate the call stack (it is still empty) and the objects tools. If I click run, it eventually dies (EiffelStudio, not the debugged version of EiffelStudio).
To Reproduce
read_substring_into (a_string: STRING_GENERAL; start_pos, end_pos: INTEGER) is -- Copy of substring containing all characters at indices -- between `start_pos' and `end_pos' into `a_string'. require a_string_not_void: a_string /= Void start_position_big_enough: start_pos >= 1 end_position_big_enough: start_pos <= end_pos + 1 end_position_not_too_big: end_pos <= capacity a_string_large_enough: a_string.count >= end_pos - start_pos + 1 local l_data: like managed_data i, j, nb: INTEGER do from i := start_pos - 1 nb := end_pos - start_pos l_data := managed_data until i > nb loop a_string.put_code (l_data.read_natural_8 (i), j) i := i + 1 j := j + 1 end end
Problem Report Interactions
It turns out that the modified call is used by the internal of the debugger to extract the message from the exception object. Maybe we could simply send the C string back to EiffelStudio instead? In any case, it is not high priority since it was the result of my own change, but we could certainly make it more robust in the future. I'm changing the status to suspended.