PR# 16598 Melted system execution stops for invariant violation, then resumes by itself
Problem Report Summary
Submitter: prestoat2000
Category: Runtime
Priority: Medium
Date: 2010/01/31
Class: Bug
Severity: Serious
Number: 16598
Release: 6.5.81777
Confidential: No
Status: Suspended
Responsible: jfiat_es
Environment: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1.6) Gecko/20100104 Firefox/3.5.6
OpenSolaris snv_131 on x86
Synopsis: Melted system execution stops for invariant violation, then resumes by itself
Description
When I run a melted system with a class invariant violation in estudio, system execution correctly stops when a class invariant violation is detected. However, after system execution stops, one of two things happens, depending on how tall the Objects window is: 1. If the Objects window is tall enough so that a vertical scrollbar does not appear when the invariant violation occurs, then execution stops for a second and then resumes by itself, without any user action! 2. If the Objects window is not very tall, so that a vertical scrollbar appears when invariant violation occurs, then execution stops when the invariant violation occurs. But scrolling the Objects window vertically (either with the mouse scroll wheel or by moving the scrollbar down), causes execution to continue again by itself. The problem does not seem to occur when I freeze the system instead of melting it. I don't know whether this occurs on other platforms, but this makes the debugger not very useful when invariant violations occur.
To Reproduce
Melt with attached classes and config file. Resize Objects window so that is is fairly tall. Click on Run button. Execution stops when invariant is violated, then resumes after a second by itself. Now freeze system. Click on Run button. Execution does not resume unexpectedly, no matter whether the Objects window is tall or short.
Problem Report Interactions
From rev#83136, the debuggee won't exit in the reported situation. When we have a melted invariant, the debugger won't try to get the stack values (mainly object test locals for invariant), and instead it will display an error in the debugger's grid. This is a acceptable fix for now, we will provide a better fix in the future involving changes in runtime and generated bytecode, however this is postponed after the 6.6 release to avoid introducing any new issue. This report is marked as suspended, and moved to "runtime" category
I was able to reproduce with recent 6.6 version, on windows XP Pro 64 bits. It doesn't seem related to the platform, but at some point, the debugger via the objects tool, tries to evaluate something on the debuggee (application). This explains why this occurs only when the tool is big enough, if the "Current" is not displayed, the debugger won't evaluate any expression on the debuggee to display those information on the tool's grid. I assume, this is the evaluation which crashes the debuggee and thus terminate the debugging session. We need to investigate this.