<div dir="ltr"><div><div><div><div>There&#39;s yet another possibility, in a preamble:<br></div>- clone the old SystemProgressMorph class,<br></div>- mutate all instances to the clone class<br><br></div>Don&#39;t use class rename and class removal, because the system will do too much clean up.<br></div>instead hack at a lower level<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-23 4:03 GMT+02:00 David T. Lewis <span dir="ltr">&lt;<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Aug 22, 2016 at 02:36:09PM +0200, Bert Freudenberg wrote:<br>
&gt; Seen it, discussed with Marcel but we don&#39;t have a good idea yet how to<br>
&gt; work around it.<br>
&gt;<br>
&gt; The only thing I can think of is to walk up the sender chain and restart<br>
&gt; some context above the one referencing the old instance layout. Maybe an<br>
&gt; exception handler in the updater that restarts updating in this specific<br>
&gt; case?<br>
&gt;<br>
&gt; - Bert -<br>
&gt;<br>
<br>
</span>I don&#39;t see a good place to put an exception handler, at least not without<br>
making things even more complicated than they already are.<br>
<br>
It looks like the the direct reference to instance var &#39;bars&#39; is where we<br>
encounter the problem. Presumably the old code in a block is refering to<br>
an ivar slot in SystemProgressMorph that used to point to the &#39;vars&#39; array,<br>
but that is now pointing to the &#39;font&#39; ivar.<br>
<br>
And indeed I see now that Marcel found and fixed this issue in Morphic-mt.1198,<br>
so that accessor methods will now be used instead of direct references to<br>
the variables.<br>
<br>
But we still have the problem of a SystemProgressMorph evaluating an older<br>
block that was created with an earlier version of the<br>
SystemProgressMorph&gt;&gt;position:<wbr>label:min:max: method, so the update stream<br>
processing still fails if the update processing was started before<br>
Morphic-mt.1198 was loaded.<br>
<br>
A partial workaround is to modify #position:label:min:max: to use an accessor<br>
for &#39;bars&#39; prior to starting the update processing. This prevents the error<br>
condition that we are discussing here, but unfortunately it also results<br>
in a couple of merge dialogs for the modified methods, so the update still<br>
requires manual intervention.<br>
<br>
Dave<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
&gt;<br>
&gt; On Sun, Aug 21, 2016 at 10:55 PM, Levente Uzonyi &lt;<a href="mailto:leves@caesar.elte.hu">leves@caesar.elte.hu</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; Same here. I think the code changes during the update and the old code on<br>
&gt; &gt; the stack causes the problem.<br>
&gt; &gt;<br>
&gt; &gt; Levente<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Sun, 21 Aug 2016, Chris Muller wrote:<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; I&#39;ve definitely experienced the exact same problem, and got around it<br>
&gt; &gt;&gt; the same way, restarting the method and proceeding.  Very strange.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Sun, Aug 21, 2016 at 3:13 PM, David T. Lewis &lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt;<br>
&gt; &gt;&gt; wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Moving from vm-dev to squeak-dev because it is a trunk update stream<br>
&gt; &gt;&gt;&gt; question.<br>
&gt; &gt;&gt;&gt; Follow ups to squeak-dev please.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Does anyone recognize this problem?<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; We have an issue in trunk update processing that prevents a full update<br>
&gt; &gt;&gt;&gt; without manual intervention. This does not affect the 5.1 release, but<br>
&gt; &gt;&gt;&gt; it would be good to fix it so that the update from 5.0 to 5.1 can be<br>
&gt; &gt;&gt;&gt; reproduced in a continuous integration test.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; To reproduce: Start with Squeak5.0-15113.image, set the update URL<br>
&gt; &gt;&gt;&gt; preference<br>
&gt; &gt;&gt;&gt; to <a href="http://source.squeak.org/trunk" rel="noreferrer" target="_blank">http://source.squeak.org/trunk</a><wbr>, and do an &quot;update from server&quot;.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; The error first appears when beginning to process the update-mt.378.mcm<br>
&gt; &gt;&gt;&gt; update map. The problem is related to updating the progress bar with<br>
&gt; &gt;&gt;&gt; ProgressInitiationException.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; When the failure occurs, the debugger (see attached image) seems to<br>
&gt; &gt;&gt;&gt; show an array access being interpreted as if the array was an instance<br>
&gt; &gt;&gt;&gt; of StrikeFont. Per Nicolas&#39; note below, it may be related to showing<br>
&gt; &gt;&gt;&gt; the progress bar while updating it.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; I can restart the update process from the debugger from<br>
&gt; &gt;&gt;&gt; SystemProgressMorph&gt;&gt;position:<wbr>label:min:max: in the stack frame, and the<br>
&gt; &gt;&gt;&gt; update proceeds. The error happens several more times, then at some point<br>
&gt; &gt;&gt;&gt; it seems to go away, so apparently the problem was fixed at some later<br>
&gt; &gt;&gt;&gt; point in the update stream.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Does anyone recognize this problem? Can we work around it by changing one<br>
&gt; &gt;&gt;&gt; or more of the update maps?<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Thanks,<br>
&gt; &gt;&gt;&gt; Dave<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On Fri, Aug 19, 2016 at 10:30:30PM +0200, Nicolas Cellier wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; yes, this is a problem I encountered both in 32 and 64 bits squeak while<br>
&gt; &gt;&gt;&gt;&gt; updating.<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; I think it&#39;s related to showing the progress bar while updating the<br>
&gt; &gt;&gt;&gt;&gt; progress bar. It&#39;s a Squeak trunk update problem, not a VM problem.<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; If some class layout change, but some block is still active (yeah, did<br>
&gt; &gt;&gt;&gt;&gt; you<br>
&gt; &gt;&gt;&gt;&gt; see how many blocks we traverse just to change display of a bar...),<br>
&gt; &gt;&gt;&gt;&gt; then<br>
&gt; &gt;&gt;&gt;&gt; the old block has invalid inst var offsets (offsets to the old object<br>
&gt; &gt;&gt;&gt;&gt; that<br>
&gt; &gt;&gt;&gt;&gt; now has become a new object with new layout).<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; In an interactive image, just close the debugger and relaunch the<br>
&gt; &gt;&gt;&gt;&gt; update.<br>
&gt; &gt;&gt;&gt;&gt; In an headless automated process, well... We should have fixed the<br>
&gt; &gt;&gt;&gt;&gt; update<br>
&gt; &gt;&gt;&gt;&gt; or start from a newer artifact...<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; 2016-08-19 21:32 GMT+02:00 tim Rowledge &lt;<a href="mailto:tim@rowledge.org">tim@rowledge.org</a>&gt;:<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; I just tried running the vmmaker-build script on my iMac with weirdly<br>
&gt; &gt;&gt;&gt;&gt;&gt; bad<br>
&gt; &gt;&gt;&gt;&gt;&gt; results.<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; The vm it downloads is the CogSpur.app-16.18.3692 version. Whilst<br>
&gt; &gt;&gt;&gt;&gt;&gt; trying<br>
&gt; &gt;&gt;&gt;&gt;&gt; to do the update part of the process I had several *very* odd failures<br>
&gt; &gt;&gt;&gt;&gt;&gt; where an object in a block was mistaken for nil during a message send.<br>
&gt; &gt;&gt;&gt;&gt;&gt; For<br>
&gt; &gt;&gt;&gt;&gt;&gt; example in a progress bar update (which I can???t provide a log for<br>
&gt; &gt;&gt;&gt;&gt;&gt; since the<br>
&gt; &gt;&gt;&gt;&gt;&gt; log got overwritten later) a line<br>
&gt; &gt;&gt;&gt;&gt;&gt; (bars at: index)<br>
&gt; &gt;&gt;&gt;&gt;&gt; lead to a nil is not indexable halt. Yet in inspecting the prior<br>
&gt; &gt;&gt;&gt;&gt;&gt; stackframe the bars object was a perfectly normal array of progress<br>
&gt; &gt;&gt;&gt;&gt;&gt; bars. A<br>
&gt; &gt;&gt;&gt;&gt;&gt; similar but not identical problem happened during another attempt.<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; Attempting to filein the BuildSqueakSpurTrunkVMMaker.st file failed<br>
&gt; &gt;&gt;&gt;&gt;&gt; when<br>
&gt; &gt;&gt;&gt;&gt;&gt; the vm exploded with no visible log.<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; Now I???m attempting to repeat that with a new 5.1rc1 vm &amp; already up<br>
&gt; &gt;&gt;&gt;&gt;&gt; to<br>
&gt; &gt;&gt;&gt;&gt;&gt; date 5.1rc1 image. Which has sorta-worked, in a rather odd manner. It<br>
&gt; &gt;&gt;&gt;&gt;&gt; got<br>
&gt; &gt;&gt;&gt;&gt;&gt; to the final save and quit but when I start the supposedly prepared<br>
&gt; &gt;&gt;&gt;&gt;&gt; image<br>
&gt; &gt;&gt;&gt;&gt;&gt; there is a problem with it trying to filein that file. I can???t tell<br>
&gt; &gt;&gt;&gt;&gt;&gt; right<br>
&gt; &gt;&gt;&gt;&gt;&gt; now if it relates to the manual filein I started or if something got<br>
&gt; &gt;&gt;&gt;&gt;&gt; added<br>
&gt; &gt;&gt;&gt;&gt;&gt; as a deferred action? Or maybe it???s a side-effect of the filein<br>
&gt; &gt;&gt;&gt;&gt;&gt; having a<br>
&gt; &gt;&gt;&gt;&gt;&gt; save &amp; quit? Not come across this before.<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; So far as I can tell it did complete the filein, so maybe all is well.<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;<br>
<br>
&gt;<br>
<br>
<br>
</div></div></blockquote></div><br></div>