ap-daemons UnitTest fails with libc++ on gale |
|||||||
Issue descriptionhttps://uberchromegw.corp.google.com/i/chromiumos.tryserver/builders/llvm_toolchain/builds/220 ap-daemons-0.0.3-r3186: armv7a-cros-linux-gnueabi-clang++ -MMD -MF platform/ap-daemons/monitor/ap-daemons_unittest.conntrack_metrics_provider_test.o.d -DUSE_METRICS_UPLOADER=1 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Iplatform/ap-daemons/ap-daemons_unittest.gen/include -Igen/include -I/build/gale/tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform2 -I/build/gale/tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform -I/build/gale/usr/include -Igen -Wall -Wno-psabi -Wunused -Wno-unused-parameter -ggdb3 -fstack-protector-strong -Wformat=2 -fvisibility=internal -Wa,--noexecstack -ftest-coverage -Werror --sysroot=/build/gale -std=c++11 -pthread -DUSE_RTTI_FOR_TYPE_TAGS -Wno-c++11-extensions -Wno-unused-local-typedefs -DBASE_VER=395517 -Wno-c++11-extensions -Wno-unused-local-typedefs -DBASE_VER=395517 -pthread -I/build/gale/usr/include/shill-client -I/build/gale/usr/include/power_manager-client -I/build/gale/usr/include/base-395517 -I/build/gale/usr/include/glib-2.0 -I/build/gale/usr/lib/glib-2.0/include -I/build/gale/usr/include/nss -I/build/gale/usr/include/nspr -I/build/gale/usr/include/chromeos -I/build/gale/usr/include/base-test-395517 -I/build/gale/usr/include/dbus-1.0 -I/build/gale/usr/lib/dbus-1.0/include -I/build/gale/usr/include/update_engine-client -fPIE -std=gnu++11 -DNDEBUG -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -O2 -O2 -O2 -pipe -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -clang-syntax -clang-syntax -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -c ../../../../../../../tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform/ap-daemons/monitor/conntrack_metrics_provider_test.cc -o platform/ap-daemons/monitor/ap-daemons_unittest.conntrack_metrics_provider_test.o ap-daemons-0.0.3-r3186: In file included from ../../../../../../../tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform/ap-daemons/monitor/conntrack_metrics_provider_test.cc:5: ap-daemons-0.0.3-r3186: In file included from ../../../../../../../tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform/ap-daemons/monitor/conntrack_metrics_provider.h:12: ap-daemons-0.0.3-r3186: In file included from ../../../../../../../tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform/ap-daemons/monitor/conntrack_parser.h:12: ap-daemons-0.0.3-r3186: In file included from ../../../../../../../usr/include/base-395517/base/files/file_path.h:113: ap-daemons-0.0.3-r3186: In file included from ../../../../../../../usr/include/base-395517/base/containers/hash_tables.h:9: ap-daemons-0.0.3-r3186: /usr/bin/../include/c++/v1/unordered_map:597:15: error: object of type 'std::__1::pair<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>' cannot be assigned because its copy assignment operator is implicitly deleted ap-daemons-0.0.3-r3186: {__nc = __v.__cc; return *this;} ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: /usr/bin/../include/c++/v1/__hash_table:1742:47: note: in instantiation of member function 'std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>::operator=' requested here ap-daemons-0.0.3-r3186: __cache->__upcast()->__value_ = *__first; ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: /usr/bin/../include/c++/v1/__hash_table:1535:9: note: in instantiation of function template specialization 'std::__1::__hash_table<std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, std::__1::__unordered_map_hasher<chromeos::ap::ConntrackParser::Key, std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, chromeos::ap::ConntrackParser::Key::Hash, true>, std::__1::__unordered_map_equal<chromeos::ap::ConntrackParser::Key, std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, true>, std::__1::allocator<std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >::__assign_multi<std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, void *> *> >' requested here ap-daemons-0.0.3-r3186: __assign_multi(__u.begin(), __u.end()); ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: /usr/bin/../include/c++/v1/unordered_map:865:18: note: in instantiation of member function 'std::__1::__hash_table<std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, std::__1::__unordered_map_hasher<chromeos::ap::ConntrackParser::Key, std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, chromeos::ap::ConntrackParser::Key::Hash, true>, std::__1::__unordered_map_equal<chromeos::ap::ConntrackParser::Key, std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, true>, std::__1::allocator<std::__1::__hash_value_type<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >::operator=' requested here ap-daemons-0.0.3-r3186: __table_ = __u.__table_; ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: ../../../../../../../usr/include/gmock/gmock-actions.h:813:30: note: in instantiation of member function 'std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >::operator=' requested here ap-daemons-0.0.3-r3186: *::testing::get<N>(args) = value_; ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: ../../../../../../../usr/include/gmock/gmock-actions.h:446:29: note: in instantiation of function template specialization 'testing::internal::SetArgumentPointeeAction<0, std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >, false>::Perform<void, std::__1::tuple<std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > > *> >' requested here ap-daemons-0.0.3-r3186: return impl_.template Perform<Result>(args); ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: ../../../../../../../usr/include/gmock/gmock-actions.h:443:14: note: in instantiation of member function 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<0, std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >, false> >::MonomorphicImpl<void (std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > > *)>::Perform' requested here ap-daemons-0.0.3-r3186: explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {} ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: ../../../../../../../usr/include/gmock/gmock-actions.h:433:26: note: in instantiation of member function 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<0, std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >, false> >::MonomorphicImpl<void (std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > > *)>::MonomorphicImpl' requested here ap-daemons-0.0.3-r3186: return Action<F>(new MonomorphicImpl<F>(impl_)); ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: ../../../../../../../tmp/portage/chromeos-base/ap-daemons-0.0.3-r3186/work/ap-daemons-0.0.3/platform/ap-daemons/monitor/conntrack_metrics_provider_test.cc:96:17: note: in instantiation of function template specialization 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<0, std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > >, false> >::operator Action<void (std::__1::unordered_map<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data, chromeos::ap::ConntrackParser::Key::Hash, std::__1::equal_to<chromeos::ap::ConntrackParser::Key>, std::__1::allocator<std::__1::pair<const chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data> > > *)>' requested here ap-daemons-0.0.3-r3186: .WillOnce(SetArgPointee<0>(ConntrackParser::ConntrackMap{ ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: /usr/bin/../include/c++/v1/utility:325:5: note: copy assignment operator is implicitly deleted because 'pair<chromeos::ap::ConntrackParser::Key, chromeos::ap::ConntrackParser::Data>' has a user-declared move constructor ap-daemons-0.0.3-r3186: pair(pair&&) = default; ap-daemons-0.0.3-r3186: ^ ap-daemons-0.0.3-r3186: 1 error generated.
,
Aug 28 2017
FWIW, Everything works if I drop the const decl from all members of Key. Presence of const members disables the copy operator and copy constructor from Key type.
--- a/monitor/conntrack_parser.h
+++ b/monitor/conntrack_parser.h
@@ -26,7 +26,7 @@ class ConntrackParser {
// Elements of ip_conntrack flow that make up the unique key.
struct Key {
- const std::string protocol;
+ std::string protocol;
- const Side original;
- const Side reply;
+ Side original;
+ Side reply;
- const size_t hash;
+ size_t hash;
More information: http://en.cppreference.com/w/cpp/language/copy_assignment under section - Deleted implicitly-declared copy assignment operator
,
Aug 28 2017
I haven't worked on this project since Dec. Need to find another owner.
,
Aug 28 2017
kkunduru@ Can you find an owner for this? The change in #2 will fix the issue but I am not sure if you will be ok with that.
,
Aug 28 2017
,
Aug 29 2017
The following revision refers to this bug: https://chrome-internal.googlesource.com/chromeos/ap-daemons/+/b0e3805be06c64585e565078dca8ec70e16378fd commit b0e3805be06c64585e565078dca8ec70e16378fd Author: Manoj Gupta <manojgupta@google.com> Date: Tue Aug 29 01:21:33 2017
,
Sep 12 2017
,
Sep 12 2017
Thanks kkunduru@ |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by manojgupta@chromium.org
, Aug 28 2017