View Issue Details

IDProjectCategoryView StatusLast Update
0004548DarkRadiantGUIpublic10.05.2018 18:28
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
PlatformLinuxOSopenSUSE 
Product Version2.2.1 
Target Version2.3.0Fixed in Version2.3.0 
Summary0004548: Holding down the SurfaceInspector toggle key S leads to crashes in Linux debug builds
DescriptionThe UndoSystem will ultimately fire an assertion since the SurfaceInspector is trying to remove itself twice from the observer list. This is due to the TransientWindow::Hide() method called twice in a row, as the wxWindow::IsShown() reports a wrong state.
Additional InformationTracing the code with some console output reveals that the wxShowEvent is fired twice in a row without corresponding Show() call, setting a wrong state on the window. Holding down the S key to toggle the window will produce this:

...
Showing window
onShowHide called with IsShown() == true
Hiding window
onShowHide called with IsShown() == false
Showing window
onShowHide called with IsShown() == true
Hiding window
onShowHide called with IsShown() == false
Showing window
onShowHide called with IsShown() == true
Hiding window
onShowHide called with IsShown() == false
Showing window
onShowHide called with IsShown() == true
Hiding window
onShowHide called with IsShown() == false
Showing window
onShowHide called with IsShown() == true
Hiding window
onShowHide called with IsShown() == false
onShowHide called with IsShown() == true
Hiding window
darkradiant: UndoSystem.cpp:220: virtual void undo::RadiantUndoSystem::removeObserver(UndoSystem::Observer*): Assertion `i != _observers.end()' failed.

TagsNo tags attached.

Activities

greebo

greebo

01.07.2017 16:33

administrator   ~0008939

Fixed after making the code more defensive in 64053971061bb663b36da45ffc01c7215bd48caa

Issue History

Date Modified Username Field Change
27.06.2017 06:47 greebo New Issue
27.06.2017 06:48 greebo Status new => confirmed
27.06.2017 06:48 greebo OS => openSUSE
27.06.2017 06:48 greebo Platform => Linux
27.06.2017 06:48 greebo Summary Holding down the SurfaceInspector toggle key S leads to crashes in debug builds => Holding down the SurfaceInspector toggle key S leads to crashes in Linux debug builds
01.07.2017 16:32 greebo Assigned To => greebo
01.07.2017 16:32 greebo Status confirmed => assigned
01.07.2017 16:32 greebo Target Version => 2.3.0
01.07.2017 16:33 greebo Note Added: 0008939
01.07.2017 16:33 greebo Status assigned => resolved
01.07.2017 16:33 greebo Fixed in Version => 2.3.0
01.07.2017 16:33 greebo Resolution open => fixed
10.05.2018 18:28 greebo Status resolved => closed