The problem: without the stack being 16-byte aligned, code generated by modern compilers like recent gcc/g++ or clang assumed that the stack is 16 byte aligned and uses SSE instructions in some circumstances that require this. Without this fix, any ctypes call into such code will crash. I mentioned this in the comment on which seeks to update our ancient copy of libffi but we may want to do this independently of that. In 2.7, we're running into the stack being misaligned in 32-bit x86 code which is something a libffi update fixes. It is a trivial patch: http://patchwork.ozlabs.org/patch/58128/ which made it into the official libffi releases in 2010 via https://github.com/atgreen/libffi/commit/3f5b1375ab1e2b8e3d593e21b27097a4a50f9b83#src/x86/sysv.S. patch against 2.7 attached. it should apply to any tree easily enough.
I've updated libffi to v3.0.13 which contains the fixes for this in 2.7, 3.2, 3.3 and 3.4. if someone wants to apply a surgical patch to fix this problem, the one mentioned above is good as well as: https://github.com/atgreen/libffi/commit/ee18766b169811426c14b011fbb46d81e344f926 I'm not actually positive that _both_ of those two small libffi patches are needed but they both fix the same thing and it doesn't hurt to have both and both are in the v3.0.13 libffi release.
History
Date
User
Action
Args
2022-04-11 14:57:42
admin
set
github: 61447
2013-03-20 00:17:19
gregory.p.smith
set
status: open -> closedresolution: fixedmessages: +