PR# 14340 Precondition violation while debugging .NET code - 2

Problem Report Summary
Submitter: manus_eiffel
Category: Debugger
Priority: Medium
Date: 2008/05/08
Class: Bug
Severity: Serious
Number: 14340
Release: 6.2.7.3416
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Synopsis: Precondition violation while debugging .NET code - 2

Description
When stopping in the debugger on a Call on Void target, that is to say debugger is stopped at {ISE_EXCEPTION_MANAGER}.internal_raise on the line `raise', trying to evaluate `l_exception.stack_trace' gives me this precondition violation:

position_small_emough: Precondition violated. (PRECONDITION_VIOLATION)
******************************** Thread exception *****************************
In thread           Root thread            0x0 (thread id)
*******************************************************************************
-------------------------------------------------------------------------------
Class / Object      Routine                Nature of exception           Effect
-------------------------------------------------------------------------------
AST_SCOPE_KEEPER    is_local_attached @2   position_small_emough:       
<0000000002A70448>                         Precondition violated.        Fail
-------------------------------------------------------------------------------
AST_CONTEXT         is_local_attached @1                                
<0000000012FD57E8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR
                    process_access_id_as @58
<000000001C144D28>  (From AST_FEATURE_CHECKER_GENERATOR)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
ACCESS_ID_AS        process @2                                          
<000000001C105AE8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR
                    process_nested_as @4   
<000000001C144D28>  (From AST_FEATURE_CHECKER_GENERATOR)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
NESTED_AS           process @2                                          
<000000001C105AB8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR
                    process_expr_call_as @3
<000000001C144D28>  (From AST_FEATURE_CHECKER_GENERATOR)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EXPR_CALL_AS        process @2                                          
<000000001C105A98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR
                    expression_or_instruction_type_check_and_code @21
<000000001C144D28>                         Routine failure.              Fail
-------------------------------------------------------------------------------
AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR
                    expression_type_check_and_code @3
<000000001C144D28>                         Routine failure.              Fail
-------------------------------------------------------------------------------
DBG_EXPRESSION_EVALUATOR_B
                    byte_node_from_ast @15 
<0000000002C5FFE8>                         Routine failure.              Fail
-------------------------------------------------------------------------------

Call stack:

ObjectClassRoutine
------------------
[0x5663E38] AST_SCOPE_KEEPER is_local_attached ( @ 2 )
[0x5663EE8] AST_CONTEXT is_local_attached ( @ 1 )
[0x5663F48] AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR process_access_id_as (From AST_FEATURE_CHECKER_GENERATOR) ( @ 58 )
[0x5663E58] ACCESS_ID_AS process ( @ 2 )
[0x5663F48] AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR process_nested_as (From AST_FEATURE_CHECKER_GENERATOR) ( @ 4 )
[0x5663F50] NESTED_AS process ( @ 2 )
[0x5663F48] AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR process_expr_call_as (From AST_FEATURE_CHECKER_GENERATOR) ( @ 3 )
[0x5663F30] EXPR_CALL_AS process ( @ 2 )
[0x5663F48] AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR expression_or_instruction_type_check_and_code ( @ 21 )
[0x5663F48] AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR expression_type_check_and_code ( @ 3 )
[0x5663E50] DBG_EXPRESSION_EVALUATOR_B byte_node_from_ast <R> ( @ 15 )
[0x5663E50] DBG_EXPRESSION_EVALUATOR_B get_byte_node <R> ( @ 47 )
[0x5663E50] DBG_EXPRESSION_EVALUATOR_B evaluate ( @ 26 )
[0x5663EA0] DBG_EXPRESSION evaluate_with_settings ( @ 5 )
[0x5663EA0] DBG_EXPRESSION evaluate ( @ 1 )
[0x5663E80] ES_OBJECTS_GRID_EXPRESSION_LINE process_evaluation ( @ 5 )
[0x5663E80] ES_OBJECTS_GRID_EXPRESSION_LINE compute_grid_display ( @ 6 )
[0x5663E80] ES_OBJECTS_GRID_EXPRESSION_LINE compute_grid_row (From ES_OBJECTS_GRID_LINE) ( @ 2 )
[0x5663E80] ES_OBJECTS_GRID_EXPRESSION_LINE compute_grid_row (From ES_OBJECTS_GRID_OBJECT_LINE) ( @ 3 )
[0x5663E80] ES_OBJECTS_GRID_EXPRESSION_LINE computed_grid_item (From ES_OBJECTS_GRID_LINE) ( @ 3 )
[0x5663E48] ES_OBJECTS_GRID compute_grid_item ( @ 10 )
[0x5663F00] FUNCTION fast_item ( @ 0 )
[0x5663F00] FUNCTION item ( @ 3 )
[0x5663DF8] EV_GRID_DRAWER_I redraw_area_in_drawable_coordinates ( @ 106 )
[0x5663DF8] EV_GRID_DRAWER_I redraw_area_in_drawable_coordinates_wrapper ( @ 1 )
[0x5663E98] PROCEDURE fast_call ( @ 0 )
[0x5663E98] PROCEDURE call ( @ 3 )
[0x5663E00] EV_GEOMETRY_ACTION_SEQUENCE wrapper ( @ 1 )
[0x5663E68] PROCEDURE fast_call ( @ 0 )
[0x5663E68] PROCEDURE call ( @ 3 )
[0x5663E00] EV_GEOMETRY_ACTION_SEQUENCE call (From ACTION_SEQUENCE) ( @ 22 )
[0x5663E00] EV_GEOMETRY_ACTION_SEQUENCE call (From EV_LITE_ACTION_SEQUENCE) ( @ 3 )
[0x5663F08] EV_DRAWING_AREA_IMP on_paint ( @ 12 )
[0x5663F08] EV_DRAWING_AREA_IMP on_wm_paint (From WEL_COMPOSITE_WINDOW) ( @ 6 )
[0x5663F08] EV_DRAWING_AREA_IMP process_message (From WEL_COMPOSITE_WINDOW) ( @ 3 )
[0x5663EC8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 10 )
[0x5663F20] WEL_MSG cwin_dispatch_message ( @ 0 )
[0x5663F20] WEL_MSG dispatch ( @ 1 )
[0x5663F10] EV_APPLICATION_IMP process_message ( @ 13 )
[0x5663F10] EV_APPLICATION_IMP process_underlying_toolkit_event_queue ( @ 7 )
[0x5663F10] EV_APPLICATION_IMP process_event_queue (From EV_APPLICATION_I) <R> ( @ 2 )
[0x5663F10] EV_APPLICATION_IMP launch (From EV_APPLICATION_I) ( @ 3 )
[0x5663E28] EV_APPLICATION launch <R> ( @ 4 )
[0x5663F28] ES_GRAPHIC make ( @ 4 )
[0x5663DF0] EB_KERNEL make ( @ 3 )

To Reproduce

										
Problem Report Interactions
From:jfiat_es    Date:2008/05/15    Status: Closed    Download   
Fixed by rev#73549

From:jfiat_es    Date:2008/05/14    Status: Analyzed    Download   
I could reproduce doing:

run until I got a call on Void
put a breakpoint on {ISE_EXCEPTION_MANAGER}.constructed_exception_chain  (last bp index)

and try to evaluate expression

l_exception.stack_trace

It seems to be due to missing context.init_variable_scopes  when checking expression for exp evaluator. (This seems to be done on the process_routine... level, so this seems logicial, we need to add such initialization somewhere, probably on {AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR}.expression_or_instruction_type_check_and_code

I will test this solution .. soon.