Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: c6c18805f2a5ba03b5ea3e765bb7fec1a2fce248 https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c6c18805f2a5ba03b5e... Author: Eliot Miranda eliot.miranda@gmail.com Date: 2021-08-12 (Thu, 12 Aug 2021)
Changed paths: M nsspur64src/vm/cogit.h M nsspur64src/vm/cogitARMv8.c M nsspur64src/vm/cogitX64SysV.c M nsspur64src/vm/cogitX64WIN64.c M nsspur64src/vm/cointerp.c M nsspur64src/vm/cointerp.h M nsspur64src/vm/gcc3x-cointerp.c M spur64src/vm/cogit.h M spur64src/vm/cogitARMv8.c M spurlowcode64src/vm/cogit.h M spurlowcode64src/vm/cogitARMv8.c M spursista64src/vm/cogit.h M spursista64src/vm/cogitARMv8.c
Log Message: ----------- CogVM source as per VMMaker.oscog-eem.3034
CogARMv8Compiler: Make sure the generated cache flush code flushes the range (startAddress to endAddress], i.e. never flush endAddress, only addresses less than endAddress. Flushing endAddress can cause a segmentation violation if the endAddress is on an empty page.
Hi Tim, Hi Ken,
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.
On Thu, Aug 12, 2021 at 11:22 AM Eliot Miranda noreply@github.com wrote:
Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: c6c18805f2a5ba03b5ea3e765bb7fec1a2fce248
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c6c18805f2a5ba03b5e... Author: Eliot Miranda eliot.miranda@gmail.com Date: 2021-08-12 (Thu, 12 Aug 2021)
Changed paths: M nsspur64src/vm/cogit.h M nsspur64src/vm/cogitARMv8.c M nsspur64src/vm/cogitX64SysV.c M nsspur64src/vm/cogitX64WIN64.c M nsspur64src/vm/cointerp.c M nsspur64src/vm/cointerp.h M nsspur64src/vm/gcc3x-cointerp.c M spur64src/vm/cogit.h M spur64src/vm/cogitARMv8.c M spurlowcode64src/vm/cogit.h M spurlowcode64src/vm/cogitARMv8.c M spursista64src/vm/cogit.h M spursista64src/vm/cogitARMv8.c
Log Message:
CogVM source as per VMMaker.oscog-eem.3034
CogARMv8Compiler: Make sure the generated cache flush code flushes the range (startAddress to endAddress], i.e. never flush endAddress, only addresses less than endAddress. Flushing endAddress can cause a segmentation violation if the endAddress is on an empty page.
On 2021-08-12 12:37, Eliot Miranda wrote:
I think I have fixed the intermittent crash issue with Cog Spur on ARMv8.
Looks good on current. Tested on LePotato running much code and some animations works fine. Stuff that used to segfault working fine now. Works with VectorGraphicsPlugin too!
Will test on other aarch64/arm64 platforms in the next couple of days..
THANKS MUCH FOR THIS !!!!
-KenD
Just did the git pull-origin thing, rebuilt on Pi4, install, start up my working image, no problems so far.
On 2021-08-12, at 4:54 PM, ken.dickey@whidbey.com wrote:
On 2021-08-12 12:37, Eliot Miranda wrote:
I think I have fixed the intermittent crash issue with Cog Spur on ARMv8.
I think you have!
Cog also works wonderfully on RasPi4 and Chromebook 2 !! :) ;) :)
-KenD
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: SDLI: Shift Disk Left Immediate
vm-dev@lists.squeakfoundation.org