[Vm-dev] SqueakFFI ARMv8 (Apple M1) | Struct Arg CRASH

Marcel Taeumel marcel.taeumel at hpi.de
Wed Apr 13 13:31:26 UTC 2022


Hi Eliot, hi all --

There is an issue with pushing certain struct args with doubles before the callout. Works fine through Rosetta (macos64x64), crashes otherwise (macos64ARMv8).

The following tests produce the crash. A breakpoint in sqFFITestFuncs.c shows that the function args are not correct:

FFIPluginTests >> #testSumStructSslf
FFIPluginTests >> #testSumStructSslf2

FFIPluginTests >> #testSumStructSslf4


FFIPluginTests >> #testSumStructSSdi5


FFIPluginTests >> #testSumdiStructWithStructSdi4

FFIPluginTests >> #testSumiStructWithStructSdi4


My hypothesis is that there is an issue with pushing integer-float combinations such as:

int16_t int64_t float ... slf
double int32_t ... di

Yet, the funny thing is that the following tests do not crash even though they also use "di" structs:

FFIPluginTests >> #testSumStructSdi
FFIPluginTests >> #testSumStructSdi2

FFIPluginTests >> #testSumStructSdi4


Since nothing serious happens in sqFFITestFuncs.c and everything is fine on X86(_64) builds, I suspect that argument pushing has a bug. Maybe even on all ARMv8 builds.

Could somebody check on Linux? Bruce?

Best,
Marcel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20220413/38d62624/attachment.html>


More information about the Vm-dev mailing list