You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9db5a94
Browse filesBrowse the repository at this point in the historyBrowse files
Viewer: a failed live property update no longer frees the cached property (#217)
PropertyTask::updateProperty() applies a running job's message to the
object getProperty() has cached, and on any failure (a GEOMTRACE step whose
size disagrees with its header, a step the data server cannot deliver, an
empty value) it deleted that object while p_properties kept pointing at it.
The next getProperty("GEOMTRACE") returned freed memory: loadStep() read a
garbage step size ("Bad Geomtrace") and then SIGSEGV, the signature of
#217; the trace panel crashed in dynamic_cast. Reproduced headless with
tests/apps/geomtrace_stress.py (gdb backtrace in __dynamic_cast on the
freed property). A failed update now leaves the cached property unchanged,
and a parse exception there is caught as getProperty() already does.
A second crash found by the same driver: PlaybackControl re-arms a one-shot
wxTimer every step and never deleted it, so removing the property panels
while a trace animates (a calculation reset, urlStateMCB) let the pending
tick reach the destroyed control (SIGSEGV in wxTimerImpl::SendEvent).
The destructor now deletes the timer; NModePanel's animation timer the same.
GeomTracePropertyPanel: a playback position past the end of a trace that
has since changed is clamped instead of collapsing the atoms to the
origin, the plot cursor is only set where the plotted series has a point
(TEVEC may be shorter than GEOMTRACE), refresh() before initialization
and a property without a registry entry no longer dereference null.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PFPK14wBcLD1s4dYUowpP4
Copy file name to clipboardExpand all lines: docs/claude/wx-viewer/index.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,3 +39,4 @@ Read this before changing any dialog, panel, sizer, grid, ewx control or the Ope
39
39
-[The Vibrational Frequencies graph is `SpectrumCanvas` over the wx-free `VibSpectrum` model (#214)](vibrational-spectrum-canvas-214.md)
40
40
-[Builder panel layouts (View > Panel layout): every pane stays an AUI pane; the one-column modes hide the inactive tab's panes](builder-panel-layouts-one-column.md)
41
41
-[A structure opened from a file is not a calculation: `AbstractPropCalculation::getProperty()` throws](structure-file-calculations-throw-on-getproperty.md)
42
+
-[A failed live property update must not free the cached property; a panel's timer must die with the panel (#217)](property-cache-and-panel-timers-outlive-their-objects.md)
0 commit comments