classification
Title: MSVC ffi_prep_args doesn't handle 64-bit arguments properly
Type: Stage: resolved
Components: ctypes Versions: Python 3.5
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Rafał Chłodnicki, amaury.forgeotdarc, belopolsky, meador.inge, python-dev, steve.dower, tim.golden, zach.ware
Priority: normal Keywords: patch

Created on 2014-10-26 20:35 by steve.dower, last changed 2016-09-15 14:04 by Rafał Chłodnicki. This issue is now closed.

Files
File name Uploaded Description Edit
ffi_prep_args.patch steve.dower, 2014-10-26 20:35 review
Messages (8)
msg230036 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2014-10-26 20:35
The ffi_prep_args function in libffi_msvc/ffi.c needs the attached patch to handle 64-bit parameters with the correct padding.

Without this patch, garbage may appear in the top part of 64-bit arguments as the values are not zeroed out by the memcpy.

I'm not 100% sure who 'owns' this file - is there an upstream project that should get the patch rather than Python? If not, I see no reason not to check this in now, even though it doesn't seem to repro with the VC10 builds.
msg231526 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2014-11-22 19:51
Nosying the other Windows guys - seems like the ctypes nosy list is inactive, and this only affects MSVC.
msg232706 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2014-12-16 04:18
This patch also resolves this test issue:

[ 68/390/2] test_ttk_textonly
test test_ttk_textonly crashed -- Traceback (most recent call last):
  File "D:\...\lib\test\regrtest.py", line 1280, in runtest_inner
    test_runner()
  File "D:\...\lib\test\test_ttk_textonly.py", line 14, in test_main
    *runtktests.get_tests(gui=False, packages=['test_ttk']))
  File "D:\...\lib\tkinter\test\runtktests.py", line 65, in get_tests
    for module in get_tests_modules(gui=gui, packages=packages):
  File "D:\...\lib\tkinter\test\runtktests.py", line 50, in get_tests_modules
    "tkinter.test")
  File "D:\...\lib\importlib\__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2208, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2191, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2180, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1149, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1420, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "D:\...\lib\tkinter\test\test_ttk\test_extensions.py", line 8, in <module>
    requires('gui')
  File "D:\...\lib\test\support\__init__.py", line 492, in requires
    if resource == 'gui' and not _is_gui_available():
  File "D:\...\lib\test\support\__init__.py", line 436, in _is_gui_available
    raise ctypes.WinError()
OSError: [WinError 0] The operation completed successfully.


I'm not entirely sure when/if I should just commit the fix without any reviews, but this issue needs to be fixed, so eventually I'll probably just do it :)
msg232713 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2014-12-16 05:22
I don't know near enough to comment on this one.  If you feel confident in it, I'd say go ahead.
msg232723 - (view) Author: Tim Golden (tim.golden) * (Python committer) Date: 2014-12-16 08:16
Likewise.
msg232818 - (view) Author: Roundup Robot (python-dev) Date: 2014-12-17 14:36
New changeset 4c81b1846e14 by Steve Dower in branch 'default':
Issue #22733: MSVC ffi_prep_args doesn't handle 64-bit arguments properly
https://hg.python.org/cpython/rev/4c81b1846e14
msg232821 - (view) Author: Roundup Robot (python-dev) Date: 2014-12-17 14:40
New changeset 24f4569a1308 by Steve Dower in branch 'default':
Issue #22733: Added NEWS item
https://hg.python.org/cpython/rev/24f4569a1308
msg276555 - (view) Author: Rafał Chłodnicki (Rafał Chłodnicki) Date: 2016-09-15 14:04
Maybe worth backporting to 3.3 and up? Especially if #20160 is to be backported as they seem to be related.
History
Date User Action Args
2016-09-15 14:04:20Rafał Chłodnickisetnosy: + Rafał Chłodnicki
messages: + msg276555
2014-12-17 14:41:44steve.dowersetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2014-12-17 14:40:13python-devsetmessages: + msg232821
2014-12-17 14:36:27python-devsetnosy: + python-dev
messages: + msg232818
2014-12-16 08:16:49tim.goldensetmessages: + msg232723
2014-12-16 05:22:07zach.waresetmessages: + msg232713
2014-12-16 04:18:37steve.dowersetmessages: + msg232706
2014-11-22 19:51:19steve.dowersetnosy: + tim.golden, zach.ware
messages: + msg231526
2014-10-26 20:35:54steve.dowercreate