<div dir="ltr"><div>Ah, but now that I've put a<br>    (selector == #unwindTo: and: [ self name = 'Context']) ifTrue:[self halt: 'debug me'].<br>I can't reproduce the problem related to removal of Context methods!!!<br><br>Instead, I've got the 'Merging Kernel-eem.1078' window with all the MethodContext->Context renaming in conflict<br>I already reported that in another thread where I told that the upgrade went "smoothly" for both my 32 & 64 bits images.<br>I don't know if it's related to package cache, or .mcd, or ???<br></div><div><br>It
 might also be that package ancestry is not correct du to overwriting of
 some packages, otherwise we should not get a merge window, but well...<br><br></div><div>Ah,
 but now I think I understand: it's just because I have pending changes 
in Kernel due to the addition of halt: above (same for my images which 
usually have some unpublished experiments).<br>We then trigger a merge 
rather than a load. And the merge sees conflict probably because of 
broken ancestry (the GUID are not corresponding), but once resolved 
manually, it processes smoothly without removing Context methods...<br><br></div>I can't instrument code that easily... This will have to wait for another time slot :(</div><div class="gmail_extra"><br><div class="gmail_quote">2017-04-08 10:47 GMT+02:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>My finding today is that ContextPart still have a subclass named Context after update 406.<br><br>ContextPart allSubclasses collect: #superclass.<br>-> an OrderedCollection(ContextPart InstructionStream)<br><br></div>So I will put a conditional breakpoint in removeSelector: to identify the path that remove the selector and re-launch the update<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-04-08 0:45 GMT+02:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@<wbr>gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Ah no, the binding #MethodContext=>Context is still in the Smalltalk globals declarations (and bindings) after update 406.<br></div>It's not at all in Undeclared. Why is that? Oh, no, it's the bootstrapContext method:<br><br>    Smalltalk at: #MethodContext ifAbsentPut: [Smalltalk classNamed: #Context].<br><br></div>And there are still plenty references to this binding at this stage.<br><br></div>So why loading Kernel-eem.1078 manually doesn't do any arm, while loading update-eem.407.mcm does?<br></div>This time it'll be for tomorrow<div><div class="m_-1559284304904944454h5"><br><div><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2017-04-08 0:21 GMT+02:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmai<wbr>l.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Ah, but thanks to my previous WeakIdentityDictionary changes, Undeclared holds weakly to its binding.<br></div>And after update 406, the references to MethodContext have already vanished.<br><div>So maybe a simple garbageCollect might help update 407 to proceed without any problem?<br></div><div><br></div><div>I've just tried that in a package above Kernel in the configuration map....<br></div><div>But it does not seems to work. I'll see tomorrow.<br></div></div><div class="m_-1559284304904944454m_4987678496618497857gmail-HOEnZb"><div class="m_-1559284304904944454m_4987678496618497857gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-04-07 23:07 GMT+02:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmai<wbr>l.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi,<br></div>I tried updating a relatively recent image from:<br><br><a href="http://files.squeak.org/6.0alpha/Squeak6.0alpha-16548-32bit/" target="_blank">http://files.squeak.org/6.0alp<wbr>ha/Squeak6.0alpha-16548-32bit/</a><br><br></div>What happens to me is an unhandled exception MNU Context>>terminateTo: during update 407.<br><br></div>Update 407 is loading Kernel.eem.1078 which is storing the new Kernel classes (Context rather than MethodContext)<br><br></div>Last change written in the change log is:<br><br>    Context removeSelector: #terminateTo:<br><br></div>Oh, but there's no such instruction in Kernel-eem.1078...<br></div>So what happens exactly which told the image to remove some just installed Context methods???<br><br></div>What happens before that is the boostrapContext in Kernel-eem.1077 preamble<br><br>    Smalltalk renameClassNamed: #MethodContext as: #Context<br><br></div>And what happens when we rename is in Environment>>renameClass:from:<wbr>to:<br><br>    oldBinding := self declarationOf: oldName.<br>    declarations removeKey: oldName.<br>    self binding: oldBinding removedFrom: self.<br>    " re-route now undeclared oldBinding "<br>    oldBinding value: aClass.<br><br></div>That means that we have an Undeclared #MethodeContext => Context.<br><br></div>And what happens when we ask to remove MethodContext class?<br></div>We start removing Context!!!<br><br></div>So what might be necessary is to purgeUndeclared in Kernel-eem.1078 preamble.<br></div>And it will work if and only if we removed all MethodContext references.<br><div><div><br><br><div><div><div><br><div><br><br></div></div></div></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div></div></div></div></div></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>