From 174b96ad7db2b3b5dfbd0848e8c3fa0ae85851bf Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Sun, 24 Jul 2022 15:48:13 +0200 Subject: [PATCH] document and work around range retracing limitation for accessing forked contexts https://github.com/hpi-swa-lab/squeak-tracedebugger/issues/90 --- .../class/rangeRetracingForkAccess.st | 4 ++++ .../TDBCursor.class/methodProperties.json | 1 + .../instance/detailsTextForValue..st | 15 +++++++++------ .../methodProperties.json | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 packages/TraceDebugger.package/TDBCursor.class/class/rangeRetracingForkAccess.st diff --git a/packages/TraceDebugger.package/TDBCursor.class/class/rangeRetracingForkAccess.st b/packages/TraceDebugger.package/TDBCursor.class/class/rangeRetracingForkAccess.st new file mode 100644 index 00000000..56cbe6df --- /dev/null +++ b/packages/TraceDebugger.package/TDBCursor.class/class/rangeRetracingForkAccess.st @@ -0,0 +1,4 @@ +documentation +rangeRetracingForkAccess + + "Currently, access from the simulated code to stored context instances from its stack might fail when the execution has been forked before. A prominent example of this limitation are non-local returns within an unwind context (#aboutToReturn:through:). See https://github.com/hpi-swa-lab/squeak-tracedebugger/issues/90." \ No newline at end of file diff --git a/packages/TraceDebugger.package/TDBCursor.class/methodProperties.json b/packages/TraceDebugger.package/TDBCursor.class/methodProperties.json index 3c5fb97b..7b2a59c7 100644 --- a/packages/TraceDebugger.package/TDBCursor.class/methodProperties.json +++ b/packages/TraceDebugger.package/TDBCursor.class/methodProperties.json @@ -9,6 +9,7 @@ "moveUpstream" : "ct 3/11/2022 20:15", "on:" : "ct 11/20/2021 21:25", "proxyHacks" : "ct 7/3/2022 20:56", + "rangeRetracingForkAccess" : "ct 7/24/2022 15:45", "traceClass" : "ct 11/18/2021 18:06", "traceForBlock:" : "ct 5/14/2022 16:26", "traceForContext:" : "ct 5/14/2022 16:14" }, diff --git a/packages/TraceDebugger.package/TDBHistoryExplorer.class/instance/detailsTextForValue..st b/packages/TraceDebugger.package/TDBHistoryExplorer.class/instance/detailsTextForValue..st index 4e000106..ce16e728 100644 --- a/packages/TraceDebugger.package/TDBHistoryExplorer.class/instance/detailsTextForValue..st +++ b/packages/TraceDebugger.package/TDBHistoryExplorer.class/instance/detailsTextForValue..st @@ -1,10 +1,13 @@ labels & details detailsTextForValue: value - [value isText ifTrue: [^ self detailsTextForTextValue: value]. - value isForm ifTrue: [^ self detailsTextForFormValue: value]. - value isMorph ifTrue: [^ self detailsTextForMorphValue: value]. + self flag: #rangeRetracingForkAccess. "We would want to use non-local returns here which would send #aboutToReturn:through: which is currently not supported during range retracing." - ^ self detailsTextForObjectValue: value] - on: self commonErrors do: [:ex | - ^ self errorText: 'display error' exception: ex] \ No newline at end of file + ^ [true + caseOf: + {[value isText] -> [self detailsTextForTextValue: value]. + [value isForm] -> [self detailsTextForFormValue: value]. + [value isMorph] -> [self detailsTextForMorphValue: value]} + otherwise: [self detailsTextForObjectValue: value]] + on: self commonErrors do: [:ex | + self errorText: 'display error' exception: ex] \ No newline at end of file diff --git a/packages/TraceDebugger.package/TDBHistoryExplorer.class/methodProperties.json b/packages/TraceDebugger.package/TDBHistoryExplorer.class/methodProperties.json index 122f03cc..a504171e 100644 --- a/packages/TraceDebugger.package/TDBHistoryExplorer.class/methodProperties.json +++ b/packages/TraceDebugger.package/TDBHistoryExplorer.class/methodProperties.json @@ -64,7 +64,7 @@ "detailsTextForObjectValue:" : "ct 7/21/2022 21:17", "detailsTextForResult:fromRoot:" : "ct 7/22/2022 20:57", "detailsTextForTextValue:" : "ct 7/22/2022 00:25", - "detailsTextForValue:" : "ct 7/22/2022 13:30", + "detailsTextForValue:" : "ct 7/24/2022 15:46", "doItContext" : "ct 6/18/2022 23:34", "doItReceiver" : "ct 6/18/2022 23:34", "errorLabelFor:" : "ct 7/3/2022 23:48",