Hi Both,

     see commit 97b4903b4b88f22c1bd11760f107852c63f9db40
Author: Eliot Miranda <eliot.miranda@gmail.com>
Date:   Sat Dec 11 11:58:58 2021 -0800

    src/plugins/SHA2Plugin/SHA2Plugin.c as per CryptographyPlugins-eem.24

    Fix crashes in primitiveSHA256ProcessBufferUpdatingHash when compiling with
    Clang on x86_64 due to SSE instructions which require 128-bit stack alignment.

I need to know about any other such crashes pronto.


On Fri, Dec 10, 2021 at 4:43 AM Levente Uzonyi <leves@caesar.elte.hu> wrote:
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/99f1116c0f7a4ba9a0bf88cf7deb276325aa2d79/src/plugins/SHA2Plugin/SHA2Plugin.c#L277
was not the expected pointer, so the subsequent copying into it resulted
in segmentation fault.


Levente





--
_,,,^..^,,,_
best, Eliot