Opened 10 years ago
Closed 10 years ago
#384 closed defect (fixed)
Crashing mostly on Exit
Reported by: | butler | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | SasView 3.1.0 |
Component: | SasView | Keywords: | |
Cc: | Work Package: | SasView Bug Fixing |
Description
The last several builds have been crashing, mostly on exit but not always with the following error popup with title of Microsoft Visual C++ Runtime Library
Microsoft Visual C++ Runtime Library Runtime Error! Program: C:\Program Files (x86)\SasView\SasView.exe R6025 - pure virtual function call
One has to click OK and it pops up again and again. Eventually clicking Ok a popup indicates SasView has crashed. No information is added to the log that can help debug more.
NOTE: this has been verified using windows installer version downloaded from ESS Jenkins builds.
Change History (3)
comment:1 Changed 10 years ago by butler
- Milestone changed from SasView Next Release +1 to SasView 3.1
comment:2 Changed 10 years ago by krzywon
comment:3 Changed 10 years ago by pkienzle
- Resolution set to fixed
- Status changed from new to closed
More details:
You don't need to delete the graph; you just need the graph to not have focus.
The crash happens during exit processing, specifically wx._core_.App_Cleanup.
For some reason, the App_CleanUp is triggering PlotPanel?.on_set_focus. I was unable to determine why this was happening, and couldn't remove it.
Instead, I traced the crash to data_panel.set_panel_on_focus, which updates the "Append Plot" dropdown with the list of active panels, and sets the string to the active panel.
The "fix" (aka ugly hack) is to modify the function to check if the "Append Plot" dropdown widget is being deleted before updating the widget.
This is related to opening and closing (plot only?) windows. If you open multiple plot windows and close a few (but not all of them), the error is generated on closing. If you open multiple, but do not close any, no error is thrown. If you open multiple and close them all, no error occurs. This suggests the windows aren't completely destroyed on closing until all plots are closed. When the main program closes, it tries to close all known windows, but if they are already closed, they cannot be found, throwing the error.