[ https://issues.apache.org/jira/browse/ARROW-12240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17316841#comment-17316841 ]
Yibo Cai edited comment on ARROW-12240 at 4/8/21, 4:40 AM: ----------------------------------------------------------- This warning only happens with clang-12. The reason is that unordered_map is [standard layout type|https://en.cppreference.com/w/cpp/named_req/StandardLayoutType] before clang-12, but may change to non-standard-layout in later version: https://godbolt.org/z/ejEoYf5oq [ConvertOptions|https://github.com/apache/arrow/blob/a691e03ce3b5b9b24eccfe600d006ff6a05be84e/cpp/src/arrow/csv/options.h#L64] struct has stl container data members (vector, unordered_map, string). These containers happen to be standard-layout for current clang version. Looks there's no spec to guarantee they must be implemented as standard-layout-type. So the ConvertOptions struct may becomes non-standard-layout for later compiler versions and cause trouble. Not quite familiar with cython, will like to seek comments. cc [~apitrou] [~bkietz] Trick in https://github.com/apache/arrow/pull/9274 should fix this issue. But use offsetof macro to exact struct member offset looks a big limit to struct type. I don't know under which condition will cython generate this code. was (Author: yibocai): This warning only happens with clang-12. The reason is that unordered_map is [standard layout type|https://en.cppreference.com/w/cpp/named_req/StandardLayoutType] before clang-12, but may change to non-standard-layout in later version: https://godbolt.org/z/ejEoYf5oq [ConvertOptions|https://github.com/apache/arrow/blob/a691e03ce3b5b9b24eccfe600d006ff6a05be84e/cpp/src/arrow/csv/options.h#L64] struct has stl container data members (vector, unordered_map, string). These containers happen to be standard-layout for current clang version. Looks there's no spec to guarantee they must be implemented as standard-layout-type. So the ConvertOptions struct may becomes non-standard-layout for later compiler versions and cause trouble. Not quite familiar with cython, will like to seek comments. cc [~apitrou] [~bkietz] > [Python] invalid-offsetof warning from apple clang-12 > ----------------------------------------------------- > > Key: ARROW-12240 > URL: https://issues.apache.org/jira/browse/ARROW-12240 > Project: Apache Arrow > Issue Type: Bug > Components: Python > Reporter: Yibo Cai > Assignee: Yibo Cai > Priority: Major > > Similar issue as https://issues.apache.org/jira/browse/ARROW-11299. > Found when building pyarrow on Macos M1. I don't think it's platform related. > No warning for clang-9, but apple clang-12 complains about it. > Error log: > {code:bash} > [ 13%] Building CXX object CMakeFiles/_csv.dir/_csv.cpp.o > /Users/cyb/work/arrow/python/build/temp.macosx-11.0-arm64-3.9/_csv.cpp:19051:133: > warning: offset of on non-standard-layout type 'struct > __pyx_obj_7pyarrow_4_csv_ConvertOptions' [-Winvalid-offsetof] > if (__pyx_type_7pyarrow_4_csv_ConvertOptions.tp_weaklistoffset == 0) > __pyx_type_7pyarrow_4_csv_ConvertOptions.tp_weaklistoffset = offsetof(struct > __pyx_obj_7pyarrow_4_csv_ConvertOptions, __pyx_base.__weakref__); > ^ ~~~~~~~~~~ > /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include/stddef.h:104:24: > note: expanded from macro 'offsetof' > #define offsetof(t, d) __builtin_offsetof(t, d) > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)