<div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Tim, Hi Ken,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">    I think I have fixed the intermittent crash issue with Cog Spur on ARMv8.  The issue was that the generated cache flush code flushed the open interval (start address, end address), not the open/closed interval (start address,end address], and so if the code zone was followed by an empty page a flush of all of the code zone would flush teh address just past the code zone and cause a segmentation violation.  I can't test this properly; I have poor wifi access at the moment and can't reconnect my Raspberry Pi to wifi and so can't test.  If you could build and test that would be fantastic.  Thanks in advance if you're able to.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 12, 2021 at 11:22 AM Eliot Miranda <<a href="mailto:noreply@github.com">noreply@github.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> <br>
  Branch: refs/heads/Cog<br>
  Home:   <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm" rel="noreferrer" target="_blank">https://github.com/OpenSmalltalk/opensmalltalk-vm</a><br>
  Commit: c6c18805f2a5ba03b5ea3e765bb7fec1a2fce248<br>
      <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c6c18805f2a5ba03b5ea3e765bb7fec1a2fce248" rel="noreferrer" target="_blank">https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c6c18805f2a5ba03b5ea3e765bb7fec1a2fce248</a><br>
  Author: Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>><br>
  Date:   2021-08-12 (Thu, 12 Aug 2021)<br>
<br>
  Changed paths:<br>
    M nsspur64src/vm/cogit.h<br>
    M nsspur64src/vm/cogitARMv8.c<br>
    M nsspur64src/vm/cogitX64SysV.c<br>
    M nsspur64src/vm/cogitX64WIN64.c<br>
    M nsspur64src/vm/cointerp.c<br>
    M nsspur64src/vm/cointerp.h<br>
    M nsspur64src/vm/gcc3x-cointerp.c<br>
    M spur64src/vm/cogit.h<br>
    M spur64src/vm/cogitARMv8.c<br>
    M spurlowcode64src/vm/cogit.h<br>
    M spurlowcode64src/vm/cogitARMv8.c<br>
    M spursista64src/vm/cogit.h<br>
    M spursista64src/vm/cogitARMv8.c<br>
<br>
  Log Message:<br>
  -----------<br>
  CogVM source as per VMMaker.oscog-eem.3034<br>
<br>
CogARMv8Compiler: Make sure the generated cache flush code flushes the range<br>
(startAddress to endAddress], i.e. never flush endAddress, only addresses<br>
less than endAddress.  Flushing endAddress can cause a segmentation violation<br>
if the endAddress is on an empty page.<br>
<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>