[Pharo-project] 12186 image quit problem

Alexander Lazarević laza at blobworks.com
Fri Oct 8 05:26:16 EDT 2010


This is reproducible for me if I do:

Gofer new
  squeaksource: 'MetacelloRepository';
  package: 'ConfigurationOfExternalWebBrowser';
  load.

 (Smalltalk at: #ConfigurationOfExternalWebBrowser) load

Find the error log attached.

Alex

2010/10/8 Alexander Lazarević <laza at blobworks.com>:
> Just when I was about to test drive Torstens configuration of
> ExternalWebBrowser, the image hangs somewhere while loading. I'm able
> to abort it and find myself in some ensure block of an crticial
> section of WeakArray finalization?! Trying to quit just hangs the
> image for good.
> BTW, this is on Windows.
>
> Alex
>
> 2010/10/8 Pavel Krivanek <pavel.krivanek at gmail.com>:
>> Strange...
>> Linux VM 4.0.3.2202 from squeakvm.org worked well and your prebuilt image
>> works with all this three virtual machines. Any idea why?
>> -- Pavel
>>
>> On Fri, Oct 8, 2010 at 10:49 AM, Marcus Denker <marcus.denker at inria.fr>
>> wrote:
>>>
>>> On Oct 8, 2010, at 10:39 AM, Pavel Krivanek wrote:
>>>
>>> > Hmm, this is the result for Linux and
>>> > cogvm 3.9-7 and pharovm 3.10-3
>>> >
>>> >
>>>
>>> can you try:
>>>
>>> https://gforge.inria.fr/frs/download.php/27589/PharoCore-1.2-12186.zip
>>>
>>>
>>> --
>>> Marcus Denker  -- http://www.marcusdenker.de
>>> INRIA Lille -- Nord Europe. Team RMoD.
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project at lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project at lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
-------------- next part --------------
8 October 2010 11:19:18 am

VM: Win32 - IX86 - NT - Squeak3.10.2 of '5 June 2008' [latest update: #7179]
Image: Pharo1.2a [Latest update: #12186]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\laza\Desktop\PharoCore-1.2-12172
Trusted Dir C:\Users\laza\Desktop\PharoCore-1.2-12172\laza
Untrusted Dir C:\Users\laza\Documents\My Squeak

[caught := true.
	self wait.
	blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
	Receiver: a Semaphore()
	Arguments and temporary variables: 
		mutuallyExcludedBlock: 	[blockValue := [mutuallyExcludedBlock value]
				ifError...etc...
		blockValue: 	#(nil true)
		caught: 	a Semaphore()
	Receiver's instance variables: 
		firstLink: 	nil
		lastLink: 	nil
		excessSignals: 	0

BlockClosure>>ensure:
	Receiver: [caught := true.
	self wait.
	blockValue := mutuallyExcludedBlock value]
	Arguments and temporary variables: 
		aBlock: 	[caught
		ifTrue: [self signal]]
		complete: 	nil
		returnValue: 	nil
	Receiver's instance variables: 
		outerContext: 	Semaphore>>critical:
		startpc: 	38
		numArgs: 	0

Semaphore>>critical:
	Receiver: a Semaphore()
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		firstLink: 	nil
		lastLink: 	nil
		excessSignals: 	0

Semaphore>>critical:ifError:
	Receiver: a Semaphore()
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		firstLink: 	nil
		lastLink: 	nil
		excessSignals: 	0

WeakArray class>>addWeakDependent:
	Receiver: WeakArray
	Arguments and temporary variables: 
		anObject: 	a WeakIdentityKeyDictionary()
	Receiver's instance variables: 
		superclass: 	Array
		methodDict: 	a MethodDictionary()
		format: 	514
		instanceVariables: 	nil
		organization: 	('as yet unclassified')

		subclasses: 	nil
		name: 	#WeakArray
		classPool: 	a Dictionary(#FinalizationDependents->a WeakArray(nil a WeakRegistry...etc...
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Collections-Weak'
		traitComposition: 	{}
		localSelectors: 	nil

MCMethodDefinition class>>cachedDefinitions
	Receiver: MCMethodDefinition
	Arguments and temporary variables: 

	Receiver's instance variables: 
		superclass: 	MCDefinition
		methodDict: 	a MethodDictionary(#=->(MCMethodDefinition>>#= "a CompiledMethod(13...etc...
		format: 	142
		instanceVariables: 	#('classIsMeta' 'source' 'category' 'selector' 'className' '...etc...
		organization: 	('accessing' actualClass category classIsMeta className fullTimeS...etc...
		subclasses: 	nil
		name: 	#MCMethodDefinition
		classPool: 	a Dictionary(#Definitions->a WeakIdentityKeyDictionary() )
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Monticello-Modeling'
		traitComposition: 	nil
		localSelectors: 	nil

MCMethodDefinition class>>forMethodReference:
	Receiver: MCMethodDefinition
	Arguments and temporary variables: 
		aMethodReference: 	a MethodReference Object >> #metacelloIntegerLessThanSelf:
		definition: 	nil
	Receiver's instance variables: 
		superclass: 	MCDefinition
		methodDict: 	a MethodDictionary(#=->(MCMethodDefinition>>#= "a CompiledMethod(13...etc...
		format: 	142
		instanceVariables: 	#('classIsMeta' 'source' 'category' 'selector' 'className' '...etc...
		organization: 	('accessing' actualClass category classIsMeta className fullTimeS...etc...
		subclasses: 	nil
		name: 	#MCMethodDefinition
		classPool: 	a Dictionary(#Definitions->a WeakIdentityKeyDictionary() )
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Monticello-Modeling'
		traitComposition: 	nil
		localSelectors: 	nil

MethodReference>>asMethodDefinition
	Receiver: a MethodReference Object >> #metacelloIntegerLessThanSelf:
	Arguments and temporary variables: 

	Receiver's instance variables: 
		classSymbol: 	#Object
		classIsMeta: 	false
		methodSymbol: 	#metacelloIntegerLessThanSelf:
		stringVersion: 	'Object metacelloIntegerLessThanSelf:'
		category: 	nil
		package: 	nil

[:ea | definitions add: ea asMethodDefinition] in MCPackage>>snapshot
	Receiver: a MCPackage(Metacello-Core)
	Arguments and temporary variables: 
		definitions: 	a MethodReference Object >> #metacelloIntegerLessThanSelf:
		ea: 	an OrderedCollection(a MCOrganizationDefinition(#(#'Metacello-Core-Exceptio...etc...
	Receiver's instance variables: 
		name: 	'Metacello-Core'

[:each | 
| newLabel |
(count = 0
			or: [count + 1 = size
					or: [(Time millisecondsSince: lastUpdate)
							>= msecs]])
		ifTrue: [bar value: count.
			oldLabel = (newLabel := (labelBlock value: each)
								ifNil: [oldLabel])
				ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
			lastUpdate := Time millisecondClockValue].
	aBlock value: each.
	count := count + 1] in [:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: [count + 1 = size
							or: [(Time millisecondsSince: lastUpdate)
									>= msecs]])
				ifTrue: [bar value: count.
					oldLabel = (newLabel := (labelBlock value: each)
										ifNil: [oldLabel])
						ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
					lastUpdate := Time millisecondClockValue].
			aBlock value: each.
			count := count + 1]] in Array(Collection)>>do:displayingProgress:every:
	Receiver: an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...

Array(SequenceableCollection)>>do:
	Receiver: an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...
	Arguments and temporary variables: 
		aBlock: 	[:each | 
| newLabel |
(count = 0
			or: [count + 1 = size
					or: [(T...etc...
		index: 	1
		indexLimiT: 	434
	Receiver's instance variables: 
an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...

[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: [count + 1 = size
							or: [(Time millisecondsSince: lastUpdate)
									>= msecs]])
				ifTrue: [bar value: count.
					oldLabel = (newLabel := (labelBlock value: each)
										ifNil: [oldLabel])
						ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
					lastUpdate := Time millisecondClockValue].
			aBlock value: each.
			count := count + 1]] in Array(Collection)>>do:displayingProgress:every:
	Receiver: an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...

[result := workBlock value: progress] in [[result := workBlock value: progress]
		on: ProgressNotification
		do: [:ex | 
			ex extraParam isString
				ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam].
			ex resume]] in ProgressInitiationException>>defaultMorphicAction
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 
		progress: 	[:barValArg | 
| barVal return newBarSize |
barVal := barValArg.
	ret...etc...
		result: 	#(nil)
	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

BlockClosure>>on:do:
	Receiver: [result := workBlock value: progress]
	Arguments and temporary variables: 
		exception: 	ProgressNotification
		handlerAction: 	[:ex | 
ex extraParam isString
		ifTrue: [SystemProgressMorph un...etc...
		handlerActive: 	true
	Receiver's instance variables: 
		outerContext: 	[[result := workBlock value: progress]
		on: ProgressNotification...etc...
		startpc: 	83
		numArgs: 	0

[[result := workBlock value: progress]
		on: ProgressNotification
		do: [:ex | 
			ex extraParam isString
				ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam].
			ex resume]] in ProgressInitiationException>>defaultMorphicAction
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 
		progress: 	[:barValArg | 
| barVal return newBarSize |
barVal := barValArg.
	ret...etc...
		result: 	#(nil)
	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

BlockClosure>>ensure:
	Receiver: [[result := workBlock value: progress]
		on: ProgressNotification
		do: [:ex | 
			ex extr...etc...
	Arguments and temporary variables: 
		aBlock: 	[SystemProgressMorph close: progress]
		complete: 	nil
		returnValue: 	nil
	Receiver's instance variables: 
		outerContext: 	ProgressInitiationException>>defaultMorphicAction
		startpc: 	77
		numArgs: 	0

ProgressInitiationException>>defaultMorphicAction
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 
		progress: 	[:barValArg | 
| barVal return newBarSize |
barVal := barValArg.
	ret...etc...
		result: 	#(nil)
	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

MorphicUIManager>>progressInitiationExceptionDefaultAction:
	Receiver: a MorphicUIManager
	Arguments and temporary variables: 
		anException: 	ProgressInitiationException: 
	Receiver's instance variables: 
		interactiveParser: 	nil

ProgressInitiationException>>defaultAction
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 

	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

UndefinedObject>>handleSignal:
	Receiver: nil
	Arguments and temporary variables: 
		exception: 	ProgressInitiationException: 
	Receiver's instance variables: 
nil

MethodContext(ContextPart)>>handleSignal:
	Receiver: BlockClosure>>on:do:
	Arguments and temporary variables: 
		exception: 	ProgressInitiationException: 
		val: 	nil
	Receiver's instance variables: 
		sender: 	PasteUpMorph>>becomeActiveDuring:
		pc: 	17
		stackp: 	3
		method: 	(BlockClosure>>#on:do: "a CompiledMethod(88866816)")
		closureOrNil: 	nil
		receiver: 	[aBlock value]

MethodContext(ContextPart)>>handleSignal:
	Receiver: BlockClosure>>on:do:
	Arguments and temporary variables: 
		exception: 	ProgressInitiationException: 
		val: 	nil
	Receiver's instance variables: 
		sender: 	SmalltalkEditor>>evaluateSelection
		pc: 	17
		stackp: 	3
		method: 	(BlockClosure>>#on:do: "a CompiledMethod(88866816)")
		closureOrNil: 	nil
		receiver: 	[rcvr class evaluatorClass new
		evaluate: self selectionForDoitAsStr...etc...

MethodContext(ContextPart)>>handleSignal:
	Receiver: BlockClosure>>on:do:
	Arguments and temporary variables: 
		exception: 	ProgressInitiationException: 
		val: 	nil
	Receiver's instance variables: 
		sender: 	[:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
	version...etc...
		pc: 	17
		stackp: 	3
		method: 	(BlockClosure>>#on:do: "a CompiledMethod(88866816)")
		closureOrNil: 	nil
		receiver: 	[self bootstrapMetacelloFrom: repositoryUrl.
	version := self project...etc...

ProgressInitiationException(Exception)>>signal
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 

	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

ProgressInitiationException>>display:at:from:to:during:
	Receiver: ProgressInitiationException: 
	Arguments and temporary variables: 
		argString: 	''
		argPoint: 	274 at 321
		argMinVal: 	0
		argMaxVal: 	434
		argWorkBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					o...etc...
	Receiver's instance variables: 
		messageText: 	nil
		tag: 	nil
		signalContext: 	ProgressInitiationException(Exception)>>signal
		handlerContext: 	nil
		outerContext: 	nil
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
		maxVal: 	434
		minVal: 	0
		aPoint: 	274 at 321
		progressTitle: 	''

ProgressInitiationException class>>display:at:from:to:during:
	Receiver: ProgressInitiationException
	Arguments and temporary variables: 
		aString: 	''
		aPoint: 	274 at 321
		minVal: 	0
		maxVal: 	434
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
	Receiver's instance variables: 
		superclass: 	Exception
		methodDict: 	a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc...
		format: 	150
		instanceVariables: 	#('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle')
		organization: 	('accessing' workBlock)
('as yet unclassified' defaultAction disp...etc...
		subclasses: 	nil
		name: 	#ProgressInitiationException
		classPool: 	nil
		sharedPools: 	nil
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'UIManager-Support'
		traitComposition: 	{}
		localSelectors: 	nil

ByteString(String)>>displayProgressAt:from:to:during:
	Receiver: ''
	Arguments and temporary variables: 
		aPoint: 	274 at 321
		minVal: 	0
		maxVal: 	434
		workBlock: 	[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: ...etc...
	Receiver's instance variables: 
''

Array(Collection)>>do:displayingProgress:every:
	Receiver: an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...

Array(Collection)>>do:displayingProgress:
	Receiver: an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...
	Arguments and temporary variables: 
		aBlock: 	[:ea | definitions add: ea asMethodDefinition]
		aStringOrBlock: 	'Snapshotting methods...'
	Receiver's instance variables: 
an Array(a MethodReference Object >> #metacelloIntegerLessThanSelf: a MethodReference Obje...etc...

MCPackage>>snapshot
	Receiver: a MCPackage(Metacello-Core)
	Arguments and temporary variables: 
		packageInfo: 	a PackageInfo(Metacello-Core)
		definitions: 	an OrderedCollection(a MCOrganizationDefinition(#(#'Metacello-Core...etc...
		categories: 	#(#'Metacello-Core-Exceptions' #'Metacello-Core-Loaders' #'Metacell...etc...
	Receiver's instance variables: 
		name: 	'Metacello-Core'

MCMultiPackageLoader(MCPackageLoader)>>updatePackage:withSnapshot:
	Receiver: a MCMultiPackageLoader
	Arguments and temporary variables: 
		aPackage: 	a MCPackage(Metacello-Core)
		aSnapshot: 	a MCSnapshot
		patch: 	nil
		packageSnap: 	nil
	Receiver's instance variables: 
		requirements: 	nil
		unloadableDefinitions: 	nil
		obsoletions: 	a Dictionary()
		additions: 	an OrderedCollection()
		removals: 	an OrderedCollection()
		errorDefinitions: 	nil
		provisions: 	nil
		methodAdditions: 	an OrderedCollection()

[:ea | ea canOptimizeLoading
		ifTrue: [ea patch applyTo: loader]
		ifFalse: [loader updatePackage: ea package withSnapshot: ea snapshot]] in MCVersionLoader>>loadWithNameLike:
	Receiver: a MCVersionLoader
	Arguments and temporary variables: 
		loader: 	a MCVersion(Metacello-Core-DaleHenrichs.366)
		ea: 	a MCMultiPackageLoader
	Receiver's instance variables: 
		versions: 	an OrderedCollection(a MCVersion(Metacello-Core-DaleHenrichs.366) a M...etc...

OrderedCollection>>do:
	Receiver: an OrderedCollection(a MCVersion(Metacello-Core-DaleHenrichs.366) a MCVersion(Metacello-MC...etc...
	Arguments and temporary variables: 
		aBlock: 	[:ea | ea canOptimizeLoading
		ifTrue: [ea patch applyTo: loader]
		ifF...etc...
		index: 	3
	Receiver's instance variables: 
		array: 	an Array(nil nil a MCVersion(Metacello-Core-DaleHenrichs.366) a MCVersio...etc...
		firstIndex: 	3
		lastIndex: 	5

MCVersionLoader>>loadWithNameLike:
	Receiver: a MCVersionLoader
	Arguments and temporary variables: 
		aString: 	'Metacello-Core-DaleHenrichs.366'
		loader: 	a MCMultiPackageLoader
	Receiver's instance variables: 
		versions: 	an OrderedCollection(a MCVersion(Metacello-Core-DaleHenrichs.366) a M...etc...

MCVersionLoader>>load
	Receiver: a MCVersionLoader
	Arguments and temporary variables: 

	Receiver's instance variables: 
		versions: 	an OrderedCollection(a MCVersion(Metacello-Core-DaleHenrichs.366) a M...etc...

MetacelloGoferLoad(GoferLoad)>>execute
	Receiver: a MetacelloGoferLoad
	Arguments and temporary variables: 

	Receiver's instance variables: 
		gofer: 	a Gofer
		model: 	a MCVersionLoader

[goferLoad execute.
	pkgLoads
		do: [:packageLoadDirective | packageLoadDirective resolvedReference
				ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
				ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
					packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
	MetacelloPlatform current clearCurrentVersionCache] in [| goferLoad loadBlock answers |
goferLoad := MetacelloGoferLoad on: aGofer.
	answers := OrderedCollection new.
	pkgLoads
		do: [:packageLoadDirective | 
			| resolvedReference |
			aGofer disablePackageCache.
			(resolvedReference := self resolvePackageSpec: packageLoadDirective spec gofer: aGofer) ~~ nil
				ifTrue: [goferLoad addResolved: resolvedReference.
					answers addAll: packageLoadDirective spec answers.
					packageLoadDirective resolvedReference: resolvedReference]].
	Transcript cr; show: 'Starting atomic load'.
	loadBlock := [goferLoad execute.
			pkgLoads
				do: [:packageLoadDirective | packageLoadDirective resolvedReference
						ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
						ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
							packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
			MetacelloPlatform current clearCurrentVersionCache].
	answers notEmpty
		ifTrue: [loadBlock valueSupplyingMetacelloAnswers: answers]
		ifFalse: [loadBlock value].
	Transcript cr; show: 'Finished atomic load'] in MetacelloLoadingMCSpecLoader(MetacelloCommonMCSpecLoader)>>loadPackageDirectives:gofer:
	Receiver: a MetacelloLoadingMCSpecLoader
	Arguments and temporary variables: 
		pkgLoads: 	an OrderedCollection(load : Metacello-Core-DaleHenrichs.366 load : Me...etc...
		goferLoad: 	a MetacelloGoferLoad
	Receiver's instance variables: 
		spec: 	a MetacelloMCVersionSpecLoader
		operator: 	nil
		loaderPolicy: 	a MetacelloLoaderPolicy
		disablePackageCache: 	false

[| goferLoad loadBlock answers |
goferLoad := MetacelloGoferLoad on: aGofer.
	answers := OrderedCollection new.
	pkgLoads
		do: [:packageLoadDirective | 
			| resolvedReference |
			aGofer disablePackageCache.
			(resolvedReference := self resolvePackageSpec: packageLoadDirective spec gofer: aGofer) ~~ nil
				ifTrue: [goferLoad addResolved: resolvedReference.
					answers addAll: packageLoadDirective spec answers.
					packageLoadDirective resolvedReference: resolvedReference]].
	Transcript cr; show: 'Starting atomic load'.
	loadBlock := [goferLoad execute.
			pkgLoads
				do: [:packageLoadDirective | packageLoadDirective resolvedReference
						ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
						ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
							packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
			MetacelloPlatform current clearCurrentVersionCache].
	answers notEmpty
		ifTrue: [loadBlock valueSupplyingMetacelloAnswers: answers]
		ifFalse: [loadBlock value].
	Transcript cr; show: 'Finished atomic load'] in MetacelloLoadingMCSpecLoader(MetacelloCommonMCSpecLoader)>>loadPackageDirectives:gofer:
	Receiver: a MetacelloLoadingMCSpecLoader
	Arguments and temporary variables: 
		pkgLoads: 	an OrderedCollection(load : Metacello-Core-DaleHenrichs.366 load : Me...etc...
		aGofer: 	a Gofer
		goferLoad: 	a MetacelloGoferLoad
		loadBlock: 	[goferLoad execute.
	pkgLoads
		do: [:packageLoadDirective | package...etc...
		answers: 	an OrderedCollection()
	Receiver's instance variables: 
		spec: 	a MetacelloMCVersionSpecLoader
		operator: 	nil
		loaderPolicy: 	a MetacelloLoaderPolicy
		disablePackageCache: 	false

MetacelloPlatform>>do:displaying:
	Receiver: a MetacelloPlatform
	Arguments and temporary variables: 
		aBlock: 	[| goferLoad loadBlock answers |
goferLoad := MetacelloGoferLoad on: aG...etc...
		aString: 	'Atomic Load...'
	Receiver's instance variables: 
		bypassProgressBars: 	false


--- The full stack ---
[caught := true.
	self wait.
	blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
BlockClosure>>ensure:
Semaphore>>critical:
Semaphore>>critical:ifError:
WeakArray class>>addWeakDependent:
MCMethodDefinition class>>cachedDefinitions
MCMethodDefinition class>>forMethodReference:
MethodReference>>asMethodDefinition
[:ea | definitions add: ea asMethodDefinition] in MCPackage>>snapshot
[:each | 
| newLabel |
(count = 0
			or: [count + 1 = size
					or: [(Time millisecondsSince: lastUpdate)
							>= msecs]])
		ifTrue: [bar value: count.
			oldLabel = (newLabel := (labelBlock value: each)
								ifNil: [oldLabel])
				ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
			lastUpdate := Time millisecondClockValue].
	aBlock value: each.
	count := count + 1] in [:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: [count + 1 = size
							or: [(Time millisecondsSince: lastUpdate)
									>= msecs]])
				ifTrue: [bar value: count.
					oldLabel = (newLabel := (labelBlock value: each)
										ifNil: [oldLabel])
						ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
					lastUpdate := Time millisecondClockValue].
			aBlock value: each.
			count := count + 1]] in Array(Collection)>>do:displayingProgress:every:
Array(SequenceableCollection)>>do:
[:bar | self
		do: [:each | 
			| newLabel |
			(count = 0
					or: [count + 1 = size
							or: [(Time millisecondsSince: lastUpdate)
									>= msecs]])
				ifTrue: [bar value: count.
					oldLabel = (newLabel := (labelBlock value: each)
										ifNil: [oldLabel])
						ifFalse: [ProgressNotification signal: '' extra: (oldLabel := newLabel)].
					lastUpdate := Time millisecondClockValue].
			aBlock value: each.
			count := count + 1]] in Array(Collection)>>do:displayingProgress:every:
[result := workBlock value: progress] in [[result := workBlock value: progress]
		on: ProgressNotification
		do: [:ex | 
			ex extraParam isString
				ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam].
			ex resume]] in ProgressInitiationException>>defaultMorphicAction
BlockClosure>>on:do:
[[result := workBlock value: progress]
		on: ProgressNotification
		do: [:ex | 
			ex extraParam isString
				ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam].
			ex resume]] in ProgressInitiationException>>defaultMorphicAction
BlockClosure>>ensure:
ProgressInitiationException>>defaultMorphicAction
MorphicUIManager>>progressInitiationExceptionDefaultAction:
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
ByteString(String)>>displayProgressAt:from:to:during:
Array(Collection)>>do:displayingProgress:every:
Array(Collection)>>do:displayingProgress:
MCPackage>>snapshot
MCMultiPackageLoader(MCPackageLoader)>>updatePackage:withSnapshot:
[:ea | ea canOptimizeLoading
		ifTrue: [ea patch applyTo: loader]
		ifFalse: [loader updatePackage: ea package withSnapshot: ea snapshot]] in MCVersionLoader>>loadWithNameLike:
OrderedCollection>>do:
MCVersionLoader>>loadWithNameLike:
MCVersionLoader>>load
MetacelloGoferLoad(GoferLoad)>>execute
[goferLoad execute.
	pkgLoads
		do: [:packageLoadDirective | packageLoadDirective resolvedReference
				ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
				ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
					packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
	MetacelloPlatform current clearCurrentVersionCache] in [| goferLoad loadBlock answers |
goferLoad := MetacelloGoferLoad on: aGofer.
	answers := OrderedCollection new.
	pkgLoads
		do: [:packageLoadDirective | 
			| resolvedReference |
			aGofer disablePackageCache.
			(resolvedReference := self resolvePackageSpec: packageLoadDirective spec gofer: aGofer) ~~ nil
				ifTrue: [goferLoad addResolved: resolvedReference.
					answers addAll: packageLoadDirective spec answers.
					packageLoadDirective resolvedReference: resolvedReference]].
	Transcript cr; show: 'Starting atomic load'.
	loadBlock := [goferLoad execute.
			pkgLoads
				do: [:packageLoadDirective | packageLoadDirective resolvedReference
						ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
						ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
							packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
			MetacelloPlatform current clearCurrentVersionCache].
	answers notEmpty
		ifTrue: [loadBlock valueSupplyingMetacelloAnswers: answers]
		ifFalse: [loadBlock value].
	Transcript cr; show: 'Finished atomic load'] in MetacelloLoadingMCSpecLoader(MetacelloCommonMCSpecLoader)>>loadPackageDirectives:gofer:
[| goferLoad loadBlock answers |
goferLoad := MetacelloGoferLoad on: aGofer.
	answers := OrderedCollection new.
	pkgLoads
		do: [:packageLoadDirective | 
			| resolvedReference |
			aGofer disablePackageCache.
			(resolvedReference := self resolvePackageSpec: packageLoadDirective spec gofer: aGofer) ~~ nil
				ifTrue: [goferLoad addResolved: resolvedReference.
					answers addAll: packageLoadDirective spec answers.
					packageLoadDirective resolvedReference: resolvedReference]].
	Transcript cr; show: 'Starting atomic load'.
	loadBlock := [goferLoad execute.
			pkgLoads
				do: [:packageLoadDirective | packageLoadDirective resolvedReference
						ifNil: [Transcript cr; tab; show: 'Already Loaded -> ' , packageLoadDirective file]
						ifNotNil: [Transcript cr; tab; show: 'Loaded -> ' , packageLoadDirective file , ' --- ' , packageLoadDirective repository description , ' --- ' , packageLoadDirective resolvedReference repository description.
							packageLoadDirective resolvedReference workingCopy repositoryGroup addRepository: packageLoadDirective repository]].
			MetacelloPlatform current clearCurrentVersionCache].
	answers notEmpty
		ifTrue: [loadBlock valueSupplyingMetacelloAnswers: answers]
		ifFalse: [loadBlock value].
	Transcript cr; show: 'Finished atomic load'] in MetacelloLoadingMCSpecLoader(MetacelloCommonMCSpecLoader)>>loadPackageDirectives:gofer:
MetacelloPlatform>>do:displaying:
 - - - - - - - - - - - - - - -  
			- - - - - - - - - - - - - - - - - -
MetacelloLoadingMCSpecLoader(MetacelloCommonMCSpecLoader)>>loadPackageDirectives:gofer:
MetacelloAtomicLoadDirective>>finalizeLoad:
MetacelloLinearLoadDirective(MetacelloVersionLoadDirective)>>loadAtomicLoadDirective:gofer:
MetacelloAtomicLoadDirective>>loadUsing:gofer:
[:directive | directive loadUsing: aLoaderDirective gofer: aGofer] in MetacelloLinearLoadDirective(MetacelloVersionLoadDirective)>>loadLinearLoadDirective:gofer:
OrderedCollection>>do:
MetacelloLinearLoadDirective(MetacelloVersionLoadDirective)>>loadLinearLoadDirective:gofer:
MetacelloLinearLoadDirective>>loadUsing:gofer:
MetacelloLinearLoadDirective(MetacelloVersionLoadDirective)>>loadWithPolicy:
MetacelloLoaderPolicy>>load
MetacelloFetchingMCSpecLoader>>doLoad
[fetchLoader doLoad] in [| fetchLoader |
fetchLoader := self fetchRequiredFromArray: anArray.
	MetacelloPlatform current
		do: [fetchLoader doLoad]
		displaying: 'Loading ' , displayString.
	Transcript cr; show: '...finished ' , self versionNumber printString.
	^ fetchLoader] in MetacelloMCVersion>>doLoadRequiredFromArray:
MetacelloPlatform>>do:displaying:
[| fetchLoader |
fetchLoader := self fetchRequiredFromArray: anArray.
	MetacelloPlatform current
		do: [fetchLoader doLoad]
		displaying: 'Loading ' , displayString.
	Transcript cr; show: '...finished ' , self versionNumber printString.
	^ fetchLoader] in MetacelloMCVersion>>doLoadRequiredFromArray:
BlockClosure>>ensure:
MetacelloMCVersion>>doLoadRequiredFromArray:
MetacelloMCVersion>>load
[self bootstrapMetacelloFrom: repositoryUrl.
	version := self project latestVersion.
	retry
		ifTrue: [version
				repositoryOverrides: (Array
						with: (MCHttpRepository
								location: repositoryUrl
								user: ''
								password: ''))].
	version load] in [:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
	version := self project latestVersion.
	retry
		ifTrue: [version
				repositoryOverrides: (Array
						with: (MCHttpRepository
								location: repositoryUrl
								user: ''
								password: ''))].
	version load.
	^ self]
		on: Error
		do: [:ex | 
			error := ex.
			Transcript cr; show: 'failed ensureMetacello: '; show: ex description printString; show: '...retrying'.
			retry := true.
			ex return: nil]] in [| retry version error |
retry := false.
	(Array with: 'http://seaside.gemstone.com/ss/metacello' with: 'http://www.squeaksource.com/metacello')
		do: [:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
			version := self project latestVersion.
			retry
				ifTrue: [version
						repositoryOverrides: (Array
								with: (MCHttpRepository
										location: repositoryUrl
										user: ''
										password: ''))].
			version load.
			^ self]
				on: Error
				do: [:ex | 
					error := ex.
					Transcript cr; show: 'failed ensureMetacello: '; show: ex description printString; show: '...retrying'.
					retry := true.
					ex return: nil]].
	self error: 'retry with alternate repository failed: ' , error description printString] in ConfigurationOfMetacello class>>ensureMetacello
BlockClosure>>on:do:
[:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
	version := self project latestVersion.
	retry
		ifTrue: [version
				repositoryOverrides: (Array
						with: (MCHttpRepository
								location: repositoryUrl
								user: ''
								password: ''))].
	version load.
	^ self]
		on: Error
		do: [:ex | 
			error := ex.
			Transcript cr; show: 'failed ensureMetacello: '; show: ex description printString; show: '...retrying'.
			retry := true.
			ex return: nil]] in [| retry version error |
retry := false.
	(Array with: 'http://seaside.gemstone.com/ss/metacello' with: 'http://www.squeaksource.com/metacello')
		do: [:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
			version := self project latestVersion.
			retry
				ifTrue: [version
						repositoryOverrides: (Array
								with: (MCHttpRepository
										location: repositoryUrl
										user: ''
										password: ''))].
			version load.
			^ self]
				on: Error
				do: [:ex | 
					error := ex.
					Transcript cr; show: 'failed ensureMetacello: '; show: ex description printString; show: '...retrying'.
					retry := true.
					ex return: nil]].
	self error: 'retry with alternate repository failed: ' , error description printString] in ConfigurationOfMetacello class>>ensureMetacello
Array(SequenceableCollection)>>do:
[| retry version error |
retry := false.
	(Array with: 'http://seaside.gemstone.com/ss/metacello' with: 'http://www.squeaksource.com/metacello')
		do: [:repositoryUrl | [self bootstrapMetacelloFrom: repositoryUrl.
			version := self project latestVersion.
			retry
				ifTrue: [version
						repositoryOverrides: (Array
								with: (MCHttpRepository
										location: repositoryUrl
										user: ''
										password: ''))].
			version load.
			^ self]
				on: Error
				do: [:ex | 
					error := ex.
					Transcript cr; show: 'failed ensureMetacello: '; show: ex description printString; show: '...retrying'.
					retry := true.
					ex return: nil]].
	self error: 'retry with alternate repository failed: ' , error description printString] in ConfigurationOfMetacello class>>ensureMetacello
SystemDictionary(Dictionary)>>at:ifAbsent:
SmalltalkImage>>at:ifAbsent:
ConfigurationOfMetacello class>>ensureMetacello
ConfigurationOfMetacello>>project
ConfigurationOfMetacello class>>project
ConfigurationOfMetacello class>>load
[Smalltalk
		at: #Gofer
		ifAbsent: [self bootstrapPackage: 'Gofer-lr.83' from: 'http://seaside.gemstone.com/ss/metacello'].
	Smalltalk
		at: #Gofer
		ifPresent: [:goferClass | 
			| gofer |
			gofer := goferClass new url: 'http://seaside.gemstone.com/ss/metacello';
						 yourself.
			[gofer addPackage: 'ConfigurationOfMetacello']
				on: Warning
				do: [:ex | ex resume].
			gofer load].
	(Smalltalk at: #ConfigurationOfMetacello)
		perform: #load] in ConfigurationOfExternalWebBrowser class>>ensureMetacello
SystemDictionary(Dictionary)>>at:ifAbsent:
SmalltalkImage>>at:ifAbsent:
ConfigurationOfExternalWebBrowser class>>ensureMetacello
ConfigurationOfExternalWebBrowser>>project
ConfigurationOfExternalWebBrowser class>>project
ConfigurationOfExternalWebBrowser class>>load
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[rcvr class evaluatorClass new
		evaluate: self selectionForDoitAsStream
		in: ctxt
		to: rcvr
		notifying: self
		ifFail: [FakeClassPool adopt: nil.
			^ #failedDoit]
		logged: true] in SmalltalkEditor>>evaluateSelection
BlockClosure>>on:do:
SmalltalkEditor>>evaluateSelection
SmalltalkEditor>>doIt
SmalltalkEditor>>doIt:
SmalltalkEditor(TextEditor)>>dispatchOn:
SmalltalkEditor(TextEditor)>>processKeyStroke:
SmalltalkEditor(TextEditor)>>keystroke:
[editor keystroke: evt] in [| action |
evt keyValue = 13
		ifTrue: [action := self crAction.
			action
				ifNotNil: [evt hand newKeyboardFocus: nil.
					^ action value]].
	self
		handleInteraction: [editor keystroke: evt].
	self updateFromParagraph.
	super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
TextMorphForEditView>>handleInteraction:
[| action |
evt keyValue = 13
		ifTrue: [action := self crAction.
			action
				ifNotNil: [evt hand newKeyboardFocus: nil.
					^ action value]].
	self
		handleInteraction: [editor keystroke: evt].
	self updateFromParagraph.
	super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
StandardToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[ActiveHand := self.
	ActiveEvent := anEvent.
	result := focusHolder
				handleFocusEvent: (anEvent
						transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear:
[aBlock value] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[:h | 
ActiveHand := h.
	h processEvents.
	ActiveHand := nil] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[[World doOneCycle.
	Processor yield.
	false] whileFalse.
	nil] in Project class>>spawnNewProcess
[self value.
	Processor terminateActive] in BlockClosure>>newProcess


More information about the Pharo-dev mailing list