Hi Dale,

I think this problem already exists in Pharo 5.0, see bug report
18706 <https://pharo.fogbugz.com/f/cases/18706/Build-of-Pharo5-is-broken>
Build of Pharo5 is broken



2016-07-28 22:58 GMT+02:00 Dale Henrichs <[email protected]>:

> Three additional pieces of info ...
>
> 1. 'canvas' is an instance variable in the WorldState instance and is
> probably a stale instance along with a stale process
> 2. If I bring up the image headful, I get no errors and then if I save it,
> the load works properly ...
> 3. If I run the load on Pharo.image directly without the initial ` ./pharo
> Pharo.image save xxx`, it loads properly
>
> This sequence is in a script that I ship to end users, so if `./pharo
> Pharo.image save xxx` is intended to work, I will wait patiently for a
> bugfix (and submit a bug if necessary -- I originally thought that this
> might have been recently introduced, but now I think that this is a bug
> that is possibly just recently exposed) otherwise, I'll have to rewrite the
> scripts to not rely on `./pharo Pharo.image save xxx`.
>
> Dale
>
> On 07/28/2016 01:49 PM, Dale Henrichs wrote:
>
>> This sequence of commands was working yesterday and is broken today:
>>
>>   ./pharo Pharo.image save xxx; ./pharo xxx.image --quit --save ./boom.st
>>
>> The contents of boom.st is the following:
>>
>>     Metacello new
>>           baseline: 'Metacello';
>>           repository:
>> 'github://dalehenrich/metacello-work:master/repository';
>>           onConflict: [:ex | ex allow];
>>       load: #( 'batch' ).
>>
>> I've attached to PharoDebug.log ... The Pharo.image is freshly downloaded
>> along with the vm. Needless to say, the expression above works when run
>> with a GUI. Oddly enough the receiver of #finish looks to be a temp named
>> 'canvas' in the middle of the WorkState>>displayWorld:submorphs: method ...
>> two lines earlier the' canvas' temp had to have a valid value, so this has
>> the look of a zombie process of some sort that is being brought to life at
>> the wrong moment ...
>>
>> stdout for the run follows.
>>
>> Dale
>>
>> foos:voyage>./pharo Pharo.image save xxx; ./pharo xxx.image --quit --save
>> ./boom.st
>> Error: MessageNotUnderstood: receiver of "finish" is nil
>> UndefinedObject(Object)>>error:
>> [ :err :rcvr |
>> | errCtx errMorph |
>> errCtx := thisContext.
>> [ errCtx := errCtx sender.
>> "Search the sender chain to find the morph causing the problem"
>> [ errCtx notNil and: [ errCtx receiver isMorph not ] ]
>>     whileTrue: [ errCtx := errCtx sender ].
>> "If we're at the root of the context chain then we have a fatal drawing
>> problem"
>> errCtx ifNil: [ ^ self handleFatalDrawingError: err ].
>> errMorph := errCtx receiver.
>> "If the morph causing the problem has already the #drawError flag set,
>>             then search for the next morph above in the caller chain."
>> errMorph hasProperty: #errorOnDraw ] whileTrue.
>> errMorph setProperty: #errorOnDraw toValue: true.
>> "Install the old error handler, so we can re-raise the error"
>> rcvr error: err ] in WorldState>>displayWorldSafely: in Block: [ :err
>> :rcvr | ...
>> BlockClosure>>cull:cull:
>> [ :ex | errorHandlerBlock cull: ex description cull: ex receiver ] in
>> BlockClosure>>ifError: in Block: [ :ex | errorHandlerBlock cull: ex
>> description cul...etc...
>> BlockClosure>>cull:
>> Context>>evaluateSignal:
>> Context>>handleSignal:
>> MessageNotUnderstood(Exception)>>signal
>> UndefinedObject(Object)>>doesNotUnderstand: #finish
>> WorldState>>displayWorld:submorphs:
>> WorldMorph>>displayWorld
>> [ aWorld displayWorld ] in WorldState>>displayWorldSafely: in Block: [
>> aWorld displayWorld ]
>> BlockClosure>>on:do:
>> BlockClosure>>ifError:
>> WorldState>>displayWorldSafely:
>> WorldState>>doOneCycleNowFor:
>> WorldState>>doOneCycleFor:
>> WorldMorph>>doOneCycle
>> [ [ World doOneCycle.
>> Processor yield.
>> false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess in Block:
>> [ [ World doOneCycle....
>> [ self value.
>> Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self
>> value....
>>
>>
>
>

Reply via email to