Ugg Groan.
Given it is Clang, which is agressive on taking the undefined parts of the C standards as undefined, combined with the debug ones not crashing means that there is probably some code that looks ok but is actually taking advantage of something that is not defined in C.
We could try turning off optimization for this plugin but that is a hack and not a fix.
I might get lucky and see if I can scare some sensible message out of Clang about what it thinks is undefined.
cheers
bruce
On 2021-12-10T15:06:41.000+01:00, Marcel Taeumel marcel.taeumel@hpi.de wrote:
Hmm... Clang seems to be part of the problem. A gcc build on Ubuntu 18.04 did not crash. squeak.cog.spur_win64x64 (Windows 10 21H2) Clang 13.0.0 - CRASH Clang 8.0.1 - CRASH squeak.cog.spur_linux64x64 (Ubuntu 18.04) gcc 7.5.0 - OK (with some failing tests) Clang 9.0.0 - CRASH -------------------------
Am 10.12.2021 14:40:26 schrieb Marcel Taeumel marcel.taeumel@hpi.de: Hi Levente -- Windows VM crashes, too. But at a different test: #testHMACSH512Spec. <image.png> And the filename for the crash-dmp is broken. Best, Marcel
Am 10.12.2021 13:43:45 schrieb Levente Uzonyi leves@caesar.elte.hu: Hi Marcel, The SHA2 plugin (primitiveSHA256ProcessBufferUpdatingHash) still crashes with that VM on 64-bit linux. The plugin code works with earlier versions, so it's either a VM change of the past 6-9 months, a code generator bug or a compiler bug IMO. To reproduce the crash, evaluate the following: Installer ss project: 'Registers'; install: 'Registers-Core'. Installer ss project: 'Cryptography'; addPackage: 'CryptographyHashing'; addPackage: 'CryptographyHashingTests'; install. (Smalltalk classNamed: #SHA256WithSHA2PluginTest) run: #testInputs Interestingly another test (SHA512WithSHA2PluginTest) using a very similar primitive but with DoubleWords works fine. So perhaps it's an alignment issue. Assert and debug VMs do not have that issue, so it's not that easy to debug it. What I found was that buffer's value at https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/99f1116c0f7a4ba9a0bf8... was not the expected pointer, so the subsequent copying into it resulted in segmentation fault. Levente