[squeak-dev] Debugger stepInto bug: Tools-jar.1189.mcz

Jaromir Matas mail at jaromir.net
Tue Jan 31 17:24:39 UTC 2023


I’ve stumbled upon this weird bug when debugging Eliot’s example (filein the enclosed changeset first):

| home error |
home := thisContext.
Semaphore forMutualExclusion critical:
    [[nil new]
       on: Error
        do: [:ex| error := ex copyForReraiseTo: home disableUnwinds: true]].
error reraise

Run the example in the debugger: first step OVER three times and then step IN (into the reraise and then privSender) four times and you get a weird error when the last stepIn returns from privSender.

Tools-jar.1189 fixes the bug.

PS: Sorry I wasn’t able to find a simpler example.

Best,


--

Jaromír Matas

mail at jaromir.net


From: commits at source.squeak.org<mailto:commits at source.squeak.org>
Sent: Tuesday, January 31, 2023 18:13
To: squeak-dev at lists.squeakfoundation.org<mailto:squeak-dev at lists.squeakfoundation.org>
Subject: [squeak-dev] The Inbox: Tools-jar.1189.mcz

A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-jar.1189.mcz

==================== Summary ====================

Name: Tools-jar.1189
Author: jar
Time: 31 January 2023, 6:13:22.676927 pm
UUID: 70af9ca9-39c5-3944-a8dc-84124e321288
Ancestors: Tools-mt.1188

fix a bug when doing stepInto; this fix makes the three methods #stepInto, #stepOver and #stepThrough consistent. Sending an example in a separate message.

=============== Diff against Tools-mt.1188 ===============

Item was changed:
  ----- Method: Debugger>>send (in category 'context stack menu') -----
  send
         "Send the selected message in the accessed method, and take control in
         the method invoked to allow further step or send."

+        | newContext currentContext |
         self okToChange ifFalse: [^ self].
         self interruptedProcessIsReady ifFalse: [^ self shouldNotStep].
         self checkContextSelection.
+        currentContext := self selectedContext.
+        self handleLabelUpdatesIn:
+                        [interruptedProcess step: currentContext]
+                whenExecuting: currentContext.
-        interruptedProcess step: self selectedContext.
         interruptedProcess ifNil: [^ self shouldNotStep].
+        newContext := interruptedProcess stepToSendOrReturn.
+        self updateProcess.
+        self contextStackIndex > 1
+                ifTrue: [self resetContext: newContext]
+                ifFalse:
+                        [newContext == currentContext
+                                ifTrue: [self changed: #contentsSelection.
+                                                self updateInspectors]
+                                ifFalse: [self resetContext: newContext]]!
-        self resetContext: interruptedProcess stepToSendOrReturn.!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20230131/c33a2822/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reraise-methods-v2.st
Type: application/octet-stream
Size: 5244 bytes
Desc: reraise-methods-v2.st
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20230131/c33a2822/attachment.obj>


More information about the Squeak-dev mailing list