OpenSmalltalk
/
opensmalltalk-vm
|
Cog
|
11 mins and 44 secs
|
Eliot 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.
|
|
|
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
|
|
|
|
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"action": {
"@type": "ViewAction",
"url": "https://travis-ci.org/OpenSmalltalk/opensmalltalk-vm/builds/594102107?utm_medium=notification&utm_source=email",
"name": "View Build"
},
"description": "View Build #1814 on Travis CI"
}
</script>