[squeak-dev] Exception handling bug; NameLookupFailure>defaultAction

tim Rowledge tim at rowledge.org
Tue Jan 1 20:14:14 UTC 2019



> On 2018-12-31, at 9:28 PM, Frank Shearar <frank.shearar at gmail.com> wrote:
> 
> https://tech.labs.oliverwyman.com/blog/2011/01/04/try-again-with-exceptions/
> 
> described the fun I had with that method nearly exactly 8 years ago!

An alarmingly familiar feeling. It's almost as if bugs never actually get solved. Weirdest one I can recall is when working for Interval Research I had to fix some Squeak VM thing to do with file handling; it seemed ever so familiar and I dug out notebooks and discovered that exactly 10 years (to the week) before I had been fixing the same problem in the same primitive but in a totally different VM.

Just for fun and masochism, I tried another couple of tests this morning. If you add the UIUC not-site with
	| aa | 
	self flag: #ViolateNonReferenceToOtherClasses.
	aa := ServerDirectory new.
	aa server: 'st.cs.uiuc.edu'.    "host"
	aa user: 'anonymous'.
	aa password: 'yourEmail at school.edu'.
	aa directory: '/Smalltalk/Squeak/Goodies'.
	aa url: ''.    "<- this is optional.  Only used when *writing* update files."
	ServerDirectory addServer: aa named: 'UIUCArchive'.  "<- known by this name in Squeak"
and then open a filelist & select the UIUCArchive directory, 'give up' opens a notifier, which looks more like it. 

Except... try debugging by clicking on a item in the stack listing or the 'debug' button - it's back to the never ending loop. That was a bit of a surprise. Even more of a surprise was that somehow after going around a few times it crashed the VM with no log and even more surprisingly restarting the image to attempt replication went back to seeming to work 'properly' ie opening a debugger.

Clearly what ought to happen is a dNU in Exception>retry because of the unset handlerContext. I *think* a possible solution would be to set the handlerContext to 'thisContext' in UndefinedObject>handleSignal: and it *seems* to work for me so far. This is definitely *not* something I'm going to stick in trunk without serious input.
UndefinedObject>handleSignal: exception
	"When no more handler (on:do:) context left in sender chain this gets called.  Return from signal with default action."
	exception privHandlerContext: thisContext.
	^ exception resumeUnchecked: exception defaultAction

tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
How many of you believe in telekinesis? Raise my hands....




More information about the Squeak-dev mailing list