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
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).