[squeak-dev] The broken user interrupt, or the saga of 100000 factorial.

Christopher Oliver current.input.port at gmail.com
Fri Dec 16 01:06:19 UTC 2011


On Thu, 15 Dec 2011 11:35:55 +0100
Bert Freudenberg <bert at freudenbergs.de> wrote:

> Sounds tempting, but I don't think that is the core of the problem. Try this in Debugger>>openInterrupt:onProcess:

I'll look at these, but figure I'd share things found out so far.  I've been using this
crude instrument to see where and when things are going on:

|counter enabled|

counter := 0.
enabled := false.

WriteTTYEnabled := [:arg| enabled := arg].


WriteTTY :=
	[:arg | | sender |
		sender := thisContext sender.
		enabled ifTrue:	[
			FileStream fileNamed: '/dev/tty' do:
				[:handle|
					handle 	nextPutAll: '== ',
						counter asString,' ',
						sender receiver className,'(',
						sender methodClass asString,')>>',
						(sender method selector)
							asString,  
						' ',Time now asString,' ==  ',
						arg asString;
					 lf].
			counter := counter+1]].
		
WriteTTYReset := [counter := 0].

"
WriteTTYReset value
WriteTTYEnabled value: true
WriteTTYEnabled value: false
"

When I file this in and evaluate 'WriteTTYEnabled value: true', I can sprinkle the code I want to understand with 'WriteTTY value: SOMESTRING', and have output on the console without
depending on morphic display updates and the like.  I put this in the vars loop in ContextPart>>errorReportOn:, and in Object>>printStringLimitedTo: contingent on a Flag in
the Smalltalk globals.  I found that sometimes, Smaltalk indeed gets stuck converting that
bignum, but other times, the seems to go astray and the factorial marches on.  Hitting the
interrupt a second time sometimes succeeds, and two debugs appear after a while: the
expected factorial, but also BlockClosure>>newProcess/WeakArray class>>restartFinalizationProcess.  This suggests the running process has been misidentified, but I've not much idea what is happening here.

Thoughts?

-- 
Christopher Oliver <current.input.port at gmail.com>



More information about the Squeak-dev mailing list