-
-
Notifications
You must be signed in to change notification settings - Fork 31.6k
MSVC ffi_prep_args doesn't handle 64-bit arguments properly #66922
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
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. |
Nosying the other Windows guys - seems like the ctypes nosy list is inactive, and this only affects MSVC. |
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 :) |
I don't know near enough to comment on this one. If you feel confident in it, I'd say go ahead. |
Likewise. |
New changeset 4c81b1846e14 by Steve Dower in branch 'default': |
New changeset 24f4569a1308 by Steve Dower in branch 'default': |
Maybe worth backporting to 3.3 and up? Especially if bpo-20160 is to be backported as they seem to be related. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: