Message245146
Although Matt was able to work around his problem, this problem seems to still be present in 2.7 as well as all 3.x versions. I think I've found the cause of the problem: in 64-bit code, the calling conventions for passing structures by value are different. From this page:
https://msdn.microsoft.com/en-us/library/zthk2dkh(v=vs.90).aspx
I would point to "Structs/unions of size 8, 16, 32, or 64 bits and __m64 will be passed as if they were integers of the same size. Structs/unions other than these sizes will be passed as a pointer to memory allocated by the caller. For these aggregate types passed as a pointer (including __m128), the caller-allocated temporary memory will be 16-byte aligned."
The code in ffi_prep_incoming_args_SYSV (see https://hg.python.org/cpython/file/a1b76c1c3be8/Modules/_ctypes/libffi_msvc/ffi.c#l368) assumes (see lines 399, 402) that all value parameters are always passed inline on the stack - which is plainly not as per the documentation I linked to, for 64-bit code. |
|
Date |
User |
Action |
Args |
2015-06-10 22:25:13 | vinay.sajip | set | recipients:
+ vinay.sajip, amaury.forgeotdarc, meador.inge, Matt.Clarke |
2015-06-10 22:25:13 | vinay.sajip | set | messageid: <1433975113.51.0.20953299694.issue17310@psf.upfronthosting.co.za> |
2015-06-10 22:25:13 | vinay.sajip | link | issue17310 messages |
2015-06-10 22:25:12 | vinay.sajip | create | |
|