OpenSmalltalk
/
opensmalltalk-vm
11 mins and 44 secsEliot Miranda
Ensure that sigaltstack is used to establish an alternative signal stack on
Unix platforms, and that the SIGIO handler (forceInterruptCheck) runs on that
stack. Although we don't have absolute proof we have strong evidence to suggest
that on recent macOS versions (e.g. 10.13) the first delivery of SIGIO to the
VM causes corruption of the code zone if the VM is in or transitioning to
machine code. This is similar to crashes seen in the Newspeak VM on linux using
the ITIMER heartbeat. There-on the issue was that the dynamic linker would be
called within the signal handler on first invocation, and that this would cause
the dynamic linker to traverse the Smalltalk JIT code stack, misinteerpret
Smalltalk stack frames as ABI-compliant stack frames and cause corruption as
a result.
Since the code is now system wide on Unix, not merely confined to the ITIMER VM,
move the sigaltstack initialization to platforms/unix/vm/aio.c and delete the
duplications in the ITIMER heartbeat variants.
Want to know about upcoming build environment updates?
Would you like to stay up-to-date with the upcoming Travis CI build environment updates? We set up a mailing list for you!
SIGN UP HERE
Documentation about Travis CI
Have any questions? We're here to help. Unsubscribe from build emails from the OpenSmalltalk/opensmalltalk-vm repository. To unsubscribe from all build emails, please update your settings. Travis CI GmbH, Rigaer Str. 8, 10427 Berlin, Germany | GF/CEO: Randy Jacops | Contact: contact@travis-ci.com | Amtsgericht Charlottenburg, Berlin, HRB 140133 B | Umsatzsteuer-ID gemäß §27 a Umsatzsteuergesetz: DE282002648