<p></p>
<p dir="auto">Hi,</p>
<p dir="auto">In response to Marcel - it does not seem that these fast code paths are designed to work on x86.</p>
<p dir="auto">This is selected in ./opensmalltalk-vm/platforms/unix/config/configure around line 18555 or so.  I have pasted it below.</p>
<p dir="auto">The BitBltGeneric.c file that fails is only but for Arm32 and Arm64.</p>
<p dir="auto">In the x86-64 one only uses BitBltPlugin.c.</p>
<p dir="auto">I've not spent a lot of time looking but it looks like the contents of platforms/Cross/plugins/BitBltPlugin is just the source code that the Pi Foundation paid to write.</p>
<p dir="auto">So now it is clearer why it never failed for anything else other than the ArmV8 systems.</p>
<p dir="auto">Maybe the other problem is that accidentally this is thinking it is still on a 32 bit systems rather than a 64 bit systems since it does seem to be used by the 32 bit systems as well.</p>
<p dir="auto">When I set a breakpoint at fastPathBottomToTop on a Arm32 system, and then do the steps above that causes the crash on Arm64 then it hits the breakpoint.</p>
<p dir="auto">cheers</p>
<p dir="auto">bruce</p>
<p dir="auto">Arm32 example:</p>
<p dir="auto">$ lscpu<br>
Architecture:        armv7l<br>
Byte Order:          Little Endian<br>
CPU(s):              4<br>
On-line CPU(s) list: 0-3<br>
Thread(s) per core:  1<br>
Core(s) per socket:  4<br>
Socket(s):           1<br>
Vendor ID:           ARM<br>
Model:               3<br>
Model name:          Cortex-A72<br>
Stepping:            r0p3<br>
CPU max MHz:         1800.0000<br>
CPU min MHz:         600.0000<br>
BogoMIPS:            108.00<br>
Flags:               half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32</p>
<p dir="auto">GNU gdb (Raspbian 8.2.1-2) 8.2.1<br>
Copyright (C) 2018 Free Software Foundation, Inc.<br>
License GPLv3+: GNU GPL version 3 or later <a href="http://gnu.org/licenses/gpl.html" rel="nofollow">http://gnu.org/licenses/gpl.html</a><br>
This is free software: you are free to change and redistribute it.<br>
There is NO WARRANTY, to the extent permitted by law.<br>
Type "show copying" and "show warranty" for details.<br>
This GDB was configured as "arm-linux-gnueabihf".<br>
Type "show configuration" for configuration details.<br>
For bug reporting instructions, please see:<br>
<a href="http://www.gnu.org/software/gdb/bugs/" rel="nofollow">http://www.gnu.org/software/gdb/bugs/</a>.<br>
Find the GDB manual and other documentation resources online at:<br>
<a href="http://www.gnu.org/software/gdb/documentation/" rel="nofollow">http://www.gnu.org/software/gdb/documentation/</a>.</p>
<p dir="auto">For help, type "help".<br>
Type "apropos word" to search for commands related to "word"...<br>
Reading symbols from ./squeak...done.<br>
(gdb) break fastPathBottomToTop<br>
Breakpoint 1 at 0xc1b0c: file. XXXopensmalltalk-vm/platforms/Cross/plugins/BitBltPlugin/BitBltGeneric.c, line 519.<br>
(gdb) run ~/archive/StcStw/sim/StcStw-32<br>
Starting program: XXX/local/squeak/squeak ~/archive/StcStw/sim/StcStw-32<br>
[Thread debugging using libthread_db enabled]<br>
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".<br>
[New Thread 0xb5eaa400 (LWP 22687)]<br>
[New Thread 0xb56a9400 (LWP 22688)]<br>
[New Thread 0xb4da8400 (LWP 22689)]<br>
pthread_setschedparam failed: Operation not permitted<br>
This VM uses a separate heartbeat thread to update its internal clock<br>
and handle events.  For best operation, this thread should run at a<br>
higher priority, however the VM was unable to change the priority.  The<br>
effect is that heavily loaded systems may experience some latency<br>
issues.  If this occurs, please create the appropriate configuration<br>
file in /etc/security/limits.d/ as shown below:</p>
<p dir="auto">cat <<END | sudo tee /etc/security/limits.d/squeak.conf</p>
<ul dir="auto">
<li>
<pre><code> hard    rtprio  2
</code></pre>
</li>
<li>
<pre><code> soft    rtprio  2
</code></pre>
</li>
</ul>
<p dir="auto">END</p>
<p dir="auto">and report to the squeak mailing list whether this improves behaviour.</p>
<p dir="auto">You will need to log out and log back in for the limits to take effect.<br>
For more information please see<br>
<a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux">https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux</a></p>
<p dir="auto">Thread 1 "squeak" hit Breakpoint 1, fastPathBottomToTop (op=0xbefcc7a8,<br>
flags=541212736)</p>
<p dir="auto">Snip from configure.</p>
<p dir="auto">plugin="BitBltPlugin"<br>
plibs=""<br>
rm -f BitBltPlugin.sub BitBltPlugin.lib<br>
bitblt_objs="BitBltPlugin.o"<br>
bitblt_flags=""<br>
arm_arch=""</p>
<p dir="auto">case $host_cpu in<br>
arm*)<br>
case $host_cpu in<br>
armv6*) arm_arch="6" ;;<br>
armv7*) arm_arch="7-A" ;;<br>
esac</p>
<h1 dir="auto">Check whether --enable-fast-bitblt was given.</h1>
<p dir="auto">if test "${enable_fast_bitblt+set}" = set; then :<br>
enableval=$enable_fast_bitblt;  if   test "x$enableval" = "xyes" ; then<br>
bitblt_objs="BitBltPlugin.o BitBltArm.o BitBltArmLinux.o BitBltArmSimd.o BitBltDispatch.o BitBltGeneric.o BitBltArmSimdAlphaBlend.o BitBltArmSimdBitLogical.o BitBltArmSimdCompare.o BitBltArmSimdPixPaint.o BitBltArmSimdSourceWord.o"<br>
bitblt_flags="-DENABLE_FAST_BLT"<br>
fi</p>
<p dir="auto">fi</p>
<p dir="auto">;;<br>
aarch64)</p>
<h1 dir="auto">Check whether --enable-fast-bitblt was given.</h1>
<p dir="auto">if test "${enable_fast_bitblt+set}" = set; then :<br>
enableval=$enable_fast_bitblt;  if   test "x$enableval" = "xyes" ; then<br>
bitblt_objs="BitBltPlugin.o BitBltArm64.o BitBltDispatch.o BitBltGeneric.o"<br>
bitblt_flags="-DENABLE_FAST_BLT"<br>
fi</p>
<p dir="auto">fi</p>
<p dir="auto">;;</p>
<p dir="auto">esac</p>
<p dir="auto">BITBLT_OBJS=$bitblt_objs</p>
<p dir="auto">BITBLT_FLAGS=$bitblt_flags</p>
<p dir="auto">ARM_ARCH=$arm_arch</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/617#issuecomment-1057366242">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AIJPEW4MRMJHAP32ZTILFYLU57IJHANCNFSM5PYJJ4WA">unsubscribe</a>.<br />Triage notifications on the go with GitHub Mobile for <a href="https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675">iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub">Android</a>.
<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AIJPEW722UU3P6R72SHJ2SDU57IJHA5CNFSM5PYJJ4WKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOH4DCBYQ.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><OpenSmalltalk/opensmalltalk-vm/issues/617/1057366242</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/617#issuecomment-1057366242",
"url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/617#issuecomment-1057366242",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>