[squeak-dev] The Trunk: Kernel-eem.1484.mcz

Jaromir Matas mail at jaromir.net
Sat Jun 25 08:50:32 UTC 2022

Hi Eliot,
I missed that one, sorry.
I’ve just tried this example and only got an assertion error (without your fix):

p := [] newProcess suspendedContext: nil.
p signalException: Error

I just can’t figure out in which case you got the BCR exception :)

From: commits at source.squeak.org<mailto:commits at source.squeak.org>
Sent: Saturday, June 25, 2022 1:58
To: squeak-dev at lists.squeakfoundation.org<mailto:squeak-dev at lists.squeakfoundation.org>; packages at lists.squeakfoundation.org<mailto:packages at lists.squeakfoundation.org>
Subject: [squeak-dev] The Trunk: Kernel-eem.1484.mcz

Eliot Miranda uploaded a new version of Kernel to project The Trunk:

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

Name: Kernel-eem.1484
Author: eem
Time: 24 June 2022, 4:58:09.258613 pm
UUID: f8ca934f-5875-434a-8cec-4d055099bdb6
Ancestors: Kernel-mt.1483

Fix a bug in Process>>signalException: where signalling a suspended process would cause a cannot return exception.

=============== Diff against Kernel-mt.1483 ===============

Item was changed:
  ----- Method: Process>>signalException: (in category 'signaling') -----
  signalException: anException
         "Signal an exception in the receiver process...if the receiver is currently
         suspended, the exception will get signaled when the receiver is resumed.  If
         the receiver is blocked on a Semaphore, it will be immediately re-awakened
         and the exception will be signaled; if the exception is resumed, then the receiver
         will return to a blocked state unless the blocking Semaphore has excess signals"

         "If we are the active process, go ahead and signal the exception"
          self isActiveProcess ifTrue: [^anException signal].

         "Suspend myself first to ensure that I won't run away
          in the midst of the following modifications."
+        self isSuspended ifFalse:
+                [self suspend].
+        suspendedContext ifNil: [self error: 'no suspended context!!!!'].
+        suspendedContext := Context
-         self suspend.
-         suspendedContext := Context
                                                                 sender: suspendedContext
                                                                 receiver: anException
                                                                 method: (anException class lookupSelector: #signal)
                                                                 arguments: #().
+        ^self resume!
-         ^self resume!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220625/4c8927e1/attachment.html>

More information about the Squeak-dev mailing list