PR# 14745 EiffelStudio crashes when you exit EiffelStudio while debugging

Problem Report Summary
Submitter: manus_eiffel
Category: EiffelStudio
Priority: High
Date: 2008/08/20
Class: Bug
Severity: Critical
Number: 14745
Release: 6.3.7.4506
Confidential: No
Status: Analyzed
Responsible: jfiat_es
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: EiffelStudio crashes when you exit EiffelStudio while debugging

Description
It crashes because in EB_EXIT_APPLICATION_COMMAND, it now uses `eb_debugger_manager.debugging_window' to store the docking layout but the `debugging_window' is Void. I would prefer to leave it as it was before to avoid too many indirection in the chain call.

docking_layout_manager: Feature call on void target. (VOID_TARGET)
******************************** Thread exception *****************************
In thread           Root thread            0x0 (thread id)
*******************************************************************************
-------------------------------------------------------------------------------
Class / Object      Routine                Nature of exception           Effect
-------------------------------------------------------------------------------
EB_EXIT_APPLICATION_COMMAND
                    exit_application @7    docking_layout_manager:
<0000000006694858>                         Feature call on void target.  Fail
-------------------------------------------------------------------------------
EB_EXIT_APPLICATION_COMMAND
                    exit_application @7    
<0000000006694858>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_EXIT_APPLICATION_COMMAND
                    ask_confirmation @6    
<0000000006694858>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_WINDOW_MANAGER   quit @3                                             
<00000000063F06D8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_WINDOW_MANAGER   confirm_and_quit @19                                
<00000000063F06D8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_WINDOW_MANAGER   try_to_destroy_window @3
<00000000063F06D8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           fast_call                                           
<0000000002EAB548>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           call @3                                             
<0000000002EAB548>                         Routine failure.              Fail
-------------------------------------------------------------------------------
ES_WARNING_PROMPT   on_dialog_button_pressed @13
<0000000002EAA3E8>  (From ES_DIALOG)       Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           fast_call                                           
<0000000002EAA338>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           call @3                                             
<0000000002EAA338>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_NOTIFY_ACTION_SEQUENCE
                    call @22               
<0000000002EAA278>  (From ACTION_SEQUENCE) Routine failure.              Fail
-------------------------------------------------------------------------------
EV_NOTIFY_ACTION_SEQUENCE
                    call @3                
<0000000002EAA278>  (From EV_LITE_ACTION_SEQUENCE)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_BUTTON_IMP       on_bn_clicked @3                                    
<000000000F82AF88>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_BUTTON_IMP       process_notification @3
<000000000F82AF88>  (From WEL_BUTTON)      Routine failure.              Fail
-------------------------------------------------------------------------------
EV_HORIZONTAL_BOX_IMP
                    on_wm_command @15      
<000000000F82C158>  (From WEL_COMPOSITE_WINDOW)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_HORIZONTAL_BOX_IMP
                    process_message @9     
<000000000F82C158>  (From WEL_COMPOSITE_WINDOW)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
WEL_DISPATCHER      window_procedure @10                                
<00000000062E2098>  (From WEL_ABSTRACT_DISPATCHER)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------

Call stack:

ObjectClassRoutine
------------------
[0x60868A0] EB_EXIT_APPLICATION_COMMAND exit_application ( @ 7 )
[0x60868A0] EB_EXIT_APPLICATION_COMMAND ask_confirmation ( @ 6 )
[0x60868B0] EB_WINDOW_MANAGER quit ( @ 3 )
[0x60868B0] EB_WINDOW_MANAGER confirm_and_quit ( @ 19 )
[0x60868B0] EB_WINDOW_MANAGER try_to_destroy_window ( @ 3 )
[0x60868B8] PROCEDURE fast_call ( @ 0 )
[0x60868B8] PROCEDURE call ( @ 3 )
[0x60868C0] ES_WARNING_PROMPT on_dialog_button_pressed (From ES_DIALOG) ( @ 13 )
[0x60868C8] PROCEDURE fast_call ( @ 0 )
[0x60868C8] PROCEDURE call ( @ 3 )
[0x60868D0] EV_NOTIFY_ACTION_SEQUENCE call (From ACTION_SEQUENCE) ( @ 22 )
[0x60868D0] EV_NOTIFY_ACTION_SEQUENCE call (From EV_LITE_ACTION_SEQUENCE) ( @ 3 )
[0x60868D8] EV_BUTTON_IMP on_bn_clicked ( @ 3 )
[0x60868D8] EV_BUTTON_IMP process_notification (From WEL_BUTTON) ( @ 3 )
[0x60868E0] EV_HORIZONTAL_BOX_IMP on_wm_command (From WEL_COMPOSITE_WINDOW) ( @ 15 )
[0x60868E0] EV_HORIZONTAL_BOX_IMP process_message (From WEL_COMPOSITE_WINDOW) ( @ 9 )
[0x60868E8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 10 )
[0x60868D8] EV_BUTTON_IMP cwin_call_window_proc (From WEL_CONTROL) ( @ 0 )
[0x60868D8] EV_BUTTON_IMP call_default_window_procedure (From WEL_CONTROL) ( @ 1 )
[0x60868E8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 15 )
[0x60868F0] EV_DIALOG_IMP_MODAL cwin_dialog_box_indirect ( @ 0 )
[0x60868F0] EV_DIALOG_IMP_MODAL internal_dialog_make ( @ 3 )
[0x60868F0] EV_DIALOG_IMP_MODAL show_modal_to_window ( @ 5 )
[0x60868F8] EV_DIALOG_IMP show_modal_to_window ( @ 4 )
[0x6086900] EV_DIALOG show_modal_to_window ( @ 5 )
[0x60868C0] ES_WARNING_PROMPT show (From ES_DIALOG) ( @ 8 )
[0x6086908] ES_PROMPT_PROVIDER safe_show_prompt ( @ 6 )
[0x6086908] ES_PROMPT_PROVIDER show_warning_prompt_with_cancel ( @ 6 )
[0x6086910] EB_DEVELOPMENT_WINDOW destroy (From EB_WINDOW) ( @ 8 )
[0x6086910] EB_DEVELOPMENT_WINDOW destroy ( @ 10 )
[0x6086918] PROCEDURE fast_call ( @ 0 )
[0x6086918] PROCEDURE call ( @ 3 )
[0x6086920] EV_NOTIFY_ACTION_SEQUENCE call (From ACTION_SEQUENCE) ( @ 22 )
[0x6086920] EV_NOTIFY_ACTION_SEQUENCE call (From EV_LITE_ACTION_SEQUENCE) ( @ 3 )
[0x6086928] EV_TITLED_WINDOW_IMP on_wm_close (From EV_WINDOW_IMP) ( @ 3 )
[0x6086928] EV_TITLED_WINDOW_IMP process_message (From WEL_COMPOSITE_WINDOW) ( @ 21 )
[0x60868E8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 10 )
[0x6086928] EV_TITLED_WINDOW_IMP cwin_def_window_proc (From WEL_WINDOW) ( @ 0 )
[0x6086928] EV_TITLED_WINDOW_IMP call_default_window_procedure (From WEL_WINDOW) ( @ 1 )
[0x60868E8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 15 )
[0x6086928] EV_TITLED_WINDOW_IMP cwin_def_window_proc (From WEL_WINDOW) ( @ 0 )
[0x6086928] EV_TITLED_WINDOW_IMP call_default_window_procedure (From WEL_WINDOW) ( @ 1 )
[0x60868E8] WEL_DISPATCHER window_procedure (From WEL_ABSTRACT_DISPATCHER) <R> ( @ 15 )
[0x6086930] WEL_MSG cwin_dispatch_message ( @ 0 )
[0x6086930] WEL_MSG dispatch ( @ 1 )
[0x6086938] EV_APPLICATION_IMP process_window_message ( @ 14 )
[0x6086938] EV_APPLICATION_IMP process_message ( @ 11 )
[0x6086938] EV_APPLICATION_IMP process_underlying_toolkit_event_queue ( @ 7 )
[0x6086938] EV_APPLICATION_IMP process_event_queue (From EV_APPLICATION_I) <R> ( @ 2 )
[0x6086938] EV_APPLICATION_IMP launch (From EV_APPLICATION_I) ( @ 3 )
[0x6086940] EV_APPLICATION launch <R> ( @ 4 )
[0x6086948] ES_GRAPHIC make ( @ 4 )
[0x6086950] EB_KERNEL make ( @ 3 )

To Reproduce

										
Problem Report Interactions
From:manus_eiffel    Date:2008/08/20    Status: Analyzed    Download   
I fixed this crash by saving first the data and then killing the application. However I'm still leaving it open because I don't like the nesting part of it and that it seems to me that we do no need the debugging_window to save the data, we just need an access to the `docking_layout_manager' from the debugging window which could potentially be stored in the debugger_manager (I haven't looked at the previous code to see the difference).