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:jfiat_es    Date:2010/05/10    Status: Suspended    Download   
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

From:jfiat_es    Date:2010/02/15    Status: Analyzed    Download   
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.


From:prestoat2000    Date:2010/02/03    Download   
This is reproducible with 6.5 on Solaris SPARC, as well as on OpenSolaris x86.

Attached class TEST2, which is needed to reproduce the problem (TEST1
is not needed).

Attachment: test2.e     Size:92
From:prestoat2000    Date:2010/01/31    Download   
Attachments for problem report #16598

Attachment: test.e     Size:90
Attachment: test1.e     Size:60
Attachment: test.ecf     Size:1054