Tim Armstrong commented on KUDU-2094:

Yeah I believe the alignment requirement comes from the embedded Cell. My 
understanding is that C++ new pre-C++17 is not aware of alignment requirements: 

[58 to run/1 running/37 finished] Building CXX object 
FAILED: ccache 
In file included from be/src/kudu/util/flags.cc:39:0:
be/src/kudu/util/metrics.h: In member function ‘scoped_refptr<kudu::Counter> 
kudu::MetricEntity::FindOrCreateCounter(const kudu::CounterPrototype*)’:
be/src/kudu/util/metrics.h:1031:26: error: ‘new’ of type ‘kudu::Counter’ with 
extended alignment 64 [-Werror=aligned-new=]
     m = new Counter(proto);                ^

We generally inherit from AlignedNew to deal with this case: 

> GCC 7.1 complains about alignment of Counter
> --------------------------------------------
>                 Key: KUDU-2094
>                 URL: https://issues.apache.org/jira/browse/KUDU-2094
>             Project: Kudu
>          Issue Type: Bug
>            Reporter: Tim Armstrong
>            Priority: Minor
> I found this when building the kudu/util subtree in Impala with gcc 7.1.
> In a few places, e.g. metrics.h, the compiler complains that the alignment 
> required by Counter is less than the alignment guaranteed by new.
> {code}
>     m = new Counter(proto);
> {code}
> I worked around this by setting -faligned-new, which was added recently to 
> GCC and is enabled by default with C++17. The setting ensures that new 
> allocates memory with the alignment required by the data type.

This message was sent by Atlassian JIRA

Reply via email to