You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ctypes: structure with bitfields as argument #60780
ctypes pretends to support passing arguments to C functions that are structures containing bitfields, or at least does not explicitly forbid it. But doing so results in misbehavior or segfaults in libffi itself. Indeed, libffi has no support for this, and ctypes just describes a field like "int x:1;" as "int x;". The attached example segfaults on Linux x86-64.
New changeset bef2815 by Vinay Sajip (Miss Islington (bot)) in branch '3.8': bpo-16576: Add checks for bitfields passed by value to functions. (GH-17097) (GH-17223) bef2815
New changeset 91c15a5 by Vinay Sajip (Miss Islington (bot)) in branch '3.7':
[3.7] bpo-16576: Add checks for bitfields passed by value to functions. (GH-17097) (GH-17224) 91c15a5
Activity
arigo commentedon Nov 29, 2012
ctypes pretends to support passing arguments to C functions that are structures containing bitfields, or at least does not explicitly forbid it. But doing so results in misbehavior or segfaults in libffi itself. Indeed, libffi has no support for this, and ctypes just describes a field like "int x:1;" as "int x;". The attached example segfaults on Linux x86-64.
arigo commentedon Nov 29, 2012
The same misbehavior occurs if the structures are packed ("_pack_ = 1"). Attached in test186_lib.tgz.
elibendersky commentedon Mar 6, 2013
I propose to start with the attached documentation fix (generated vs. 3.2 but should be applied to all active branches).
A code fix has to be discussed more thoroughly because in theory some code running only on x86-32 can rely on it and will break.
elibendersky commentedon Mar 7, 2013
The patch addresses bpo-16575 as well
python-dev commentedon Mar 9, 2013
New changeset 0acd9408b6f1 by Eli Bendersky in branch '3.2':
Add warning in ctypes documentation for bpo-16575 and bpo-16576
http://hg.python.org/cpython/rev/0acd9408b6f1
New changeset bfc159f8e4b4 by Eli Bendersky in branch '3.3':
Add warning in ctypes documentation for bpo-16575 and bpo-16576
http://hg.python.org/cpython/rev/bfc159f8e4b4
New changeset 502624235c7b by Eli Bendersky in branch 'default':
Add warning in ctypes documentation for bpo-16575 and bpo-16576
http://hg.python.org/cpython/rev/502624235c7b
python-dev commentedon Mar 9, 2013
New changeset eece32440a52 by Eli Bendersky in branch '2.7':
Add warning in ctypes documentation for bpo-16575 and bpo-16576
http://hg.python.org/cpython/rev/eece32440a52
vsajip commentedon Nov 12, 2019
New changeset 1062715 by Vinay Sajip in branch 'master':
bpo-16576: Add checks for bitfields passed by value to functions. (GH-17097)
1062715
vsajip commentedon Nov 18, 2019
New changeset bef2815 by Vinay Sajip (Miss Islington (bot)) in branch '3.8':
bpo-16576: Add checks for bitfields passed by value to functions. (GH-17097) (GH-17223)
bef2815
vsajip commentedon Nov 21, 2019
New changeset 91c15a5 by Vinay Sajip (Miss Islington (bot)) in branch '3.7':
[3.7] bpo-16576: Add checks for bitfields passed by value to functions. (GH-17097) (GH-17224)
91c15a5
vsajip commentedon Jan 12, 2020
The issue is being reopened, see this comment on bpo-16575:
https://bugs.python.org/msg359834
hauntsaninja commentedon Oct 29, 2022
Linking for convenience: #60779 (comment)