-
-
Notifications
You must be signed in to change notification settings - Fork 33.6k
Closed as duplicate of#83714
Closed as duplicate of#83714
Copy link
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Description:
A build failure occurs in Modules/posixmodule.c when compiling CPython from the main branch using Clang with ThreadSanitizer and the --disable-gil flag.
The compilation fails with two distinct types of errors:
- The compiler reports that the
statxstruct has no member namedstx_atomic_write_unit_max_opt. This error originates from theMMmacro expansion within thepystatx_result_membersdefinition. - Subsequently, multiple errors are reported for an invalid application of
sizeofto an incomplete typePyMemberDef[]. This happens when thePy_ARRAY_LENGTHmacro is used onpystatx_result_members, indicating that the array's definition was not completed due to the initial error.
This suggests that the feature detection or conditional compilation logic for the stx_atomic_write_unit_max_opt member is not functioning correctly under this specific build configuration.
Steps to Reproduce:
- Check out the
mainbranch of cpython. - Configure the build with the following command:
CC=clang CXX=clang++ ./configure --with-thread-sanitizer --with-pydebug --disable-gil
- Run the build:
make
Expected Behavior:
The build process should complete successfully.
Actual Behavior:
The build fails with the following errors logged from Modules/posixmodule.c:
../Modules/posixmodule.c:3369:5: error: no member named 'stx_atomic_write_unit_max_opt' in 'statx'
3369 | MM(stx_atomic_write_unit_max_opt, Py_T_UINT, atomic_write_unit_max_opt,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3370 | "maximum optimized size for direct I/O with torn-write protection"),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./Modules/posixmodule.c:3325:20: note: expanded from macro 'MM'
3325 | M(#attr, type, offsetof(Py_statx_result, stx.stx_##member), doc)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-20/lib/clang/20/include/__stddef_offsetof.h:16:24: note: expanded from macro 'offsetof'
16 | #define offsetof(t, d) __builtin_offsetof(t, d)
| ^
./Modules/posixmodule.c:3323:18: note: expanded from macro 'M'
3323 | {attr, type, offset, Py_READONLY, PyDoc_STR(doc)}
| ^~~~~~
./Modules/posixmodule.c:3427:28: error: invalid application of 'sizeof' to an incomplete type 'PyMemberDef[]' (aka 'struct PyMemberDef[]')
3427 | for (size_t i = 0; i < Py_ARRAY_LENGTH(pystatx_result_members) - 1; ++i) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./Include/pymacro.h:190:12: note: expanded from macro 'Py_ARRAY_LENGTH'
190 | (sizeof(array) / sizeof((array)[0]))
| ^~~~~~~
./Modules/posixmodule.c:3447:9: error: invalid application of 'sizeof' to an incomplete type 'PyMemberDef[]' (aka 'struct PyMemberDef[]')
3447 | if (Py_ARRAY_LENGTH(pystatx_result_members) > 1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./Include/pymacro.h:190:12: note: expanded from macro 'Py_ARRAY_LENGTH'
190 | (sizeof(array) / sizeof((array)[0]))
| ^~~~~~~
Environment:
- Compiler: Clang
- Configuration Flags:
--with-thread-sanitizer --with-pydebug --disable-gil
Metadata
Metadata
Assignees
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error