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
From:manus_eiffel    Date:2008/08/19    Status: Suspended    Download   
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.