Bug #87201 | XCode 8.3.3+ -DWITH_UBSAN=ON bundled protobuf build error | ||
---|---|---|---|
Submitted: | 26 Jul 2017 8:38 | Modified: | 12 Apr 2018 5:34 |
Reporter: | Laurynas Biveinis (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
Version: | 8.0.2, 8.0.3, 8.0.4 | OS: | MacOS (10.12.6) |
Assigned to: | CPU Architecture: | Any |
[26 Jul 2017 8:38]
Laurynas Biveinis
[26 Jul 2017 10:45]
MySQL Verification Team
Thank you for the bug report. In file included from /Users/miguel/mysql-8.0.2-dmr/rapid/plugin/group_replication/include/applier.h:19: In file included from /Users/miguel/mysql-8.0.2-dmr/include/mysql/group_replication_priv.h:24: In file included from /Users/miguel/mysql-8.0.2-dmr/sql/log_event.h:78: In file included from /Users/miguel/mysql-8.0.2-dmr/sql/sql_class.h:88: /Users/miguel/mysql-8.0.2-dmr/sql/sql_admin.h:80:8: warning: 'execute' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] bool execute(THD *thd); ^ /Users/miguel/mysql-8.0.2-dmr/sql/sql_cmd.h:90:16: note: overridden virtual function is here virtual bool execute(THD *thd) = 0; ^ 2 warnings generated. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libevent.a(strlcpy.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libevent.a(strlcpy.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf-lite.a(atomicops_internals_x86_gcc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf-lite.a(atomicops_internals_x86_msvc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf-lite.a(atomicops_internals_x86_gcc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf-lite.a(atomicops_internals_x86_msvc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf.a(atomicops_internals_x86_gcc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf.a(atomicops_internals_x86_msvc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf.a(atomicops_internals_x86_gcc.cc.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libprotobuf.a(atomicops_internals_x86_msvc.cc.o) has no symbols /bin/sh: line 1: 10426 Segmentation fault: 11 ../../../extra/protobuf/protoc --cpp_out /Users/miguel/mysql-8.0.2-dmr/rapid/plugin/x/generated/protobuf_lite -I /Users/miguel/mysql-8.0.2-dmr/rapid/plugin/x/generated/protobuf_lite /Users/miguel/mysql-8.0.2-dmr/rapid/plugin/x/generated/protobuf_lite/mysqlx.proto make[2]: *** [rapid/plugin/x/generated/protobuf_lite/mysqlx.pb.cc] Error 139 make[1]: *** [rapid/plugin/x/CMakeFiles/mysqlx.dir/all] Error 2 make: *** [all] Error 2 miguel:mysql-8.0.2-dmr miguel$
[5 Oct 2017 3:19]
Laurynas Biveinis
Same with 8.0.3 and XCode 9.0.0
[5 Oct 2017 5:17]
Laurynas Biveinis
If both -DWITH_UBSAN=ON -DWITH_ASAN=ON are given, then the build fails with an ASan error. It does not fail if only -DWITH_ASAN=ON is given. [ 65%] Running C++ protocol buffer compiler (lite) on /Users/laurynas/percona/mysql-8.0.3/rapid/plugin/x/protocol/mysqlx.proto ASAN:DEADLYSIGNAL ================================================================= ==68429==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x00010794cf07 bp 0x7fff5846fe10 sp 0x7fff5846fd00 T0) ==68429==The signal is caused by a READ memory access. ==68429==Hint: address points to the zero page. #0 0x10794cf06 in google::protobuf::FileOptions::Clear() string:1272 #1 0x107cc8447 in google::protobuf::MessageLite::ParseFromString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) message_lite.cc:131 #2 0x107825e52 in void google::protobuf::DescriptorBuilder::AllocateOptionsImpl<google::protobuf::FileDescriptor>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::FileDescriptor::OptionsType const&, google::protobuf::FileDescriptor*) descriptor.cc:3226 #3 0x107825aba in google::protobuf::DescriptorBuilder::AllocateOptions(google::protobuf::FileOptions const&, google::protobuf::FileDescriptor*) descriptor.cc:3207 #4 0x10780dad9 in google::protobuf::DescriptorBuilder::BuildFile(google::protobuf::FileDescriptorProto const&) descriptor.cc:3483 #5 0x1077de1a6 in google::protobuf::DescriptorPool::BuildFileFromDatabase(google::protobuf::FileDescriptorProto const&) const descriptor.cc:2710 #6 0x1077d3944 in google::protobuf::DescriptorPool::TryFindFileInFallbackDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const descriptor.cc:1418 #7 0x1077d33a4 in google::protobuf::DescriptorPool::FindFileByName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const descriptor.cc:1038 #8 0x10793ba96 in google::protobuf::protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() descriptor.pb.cc:98 #9 0x107c53696 in google::protobuf::internal::FunctionClosure0::Run() common.h:876 #10 0x107c59062 in google::protobuf::GoogleOnceInitImpl(long*, google::protobuf::Closure*) once.cc:83 #11 0x1078926d2 in google::protobuf::GoogleOnceInit(long*, void (*)()) once.h:127 #12 0x1079d723d in google::protobuf::FileOptions::GetMetadata() const descriptor.pb.cc:5610 #13 0x107c2fad5 in google::protobuf::compiler::Parser::ParseOption(google::protobuf::Message*, google::protobuf::compiler::Parser::LocationRecorder const&, google::protobuf::FileDescriptorProto const*, google::protobuf::compiler::Parser::OptionStyle) parser.cc:1019 #14 0x107c2cef9 in google::protobuf::compiler::Parser::ParseTopLevelStatement(google::protobuf::FileDescriptorProto*, google::protobuf::compiler::Parser::LocationRecorder const&) parser.cc:524 #15 0x107c2b03e in google::protobuf::compiler::Parser::Parse(google::protobuf::io::Tokenizer*, google::protobuf::FileDescriptorProto*) parser.cc:450 #16 0x107c06950 in google::protobuf::compiler::SourceTreeDescriptorDatabase::FindFileByName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::FileDescriptorProto*) importer.cc:148 #17 0x1077d3934 in google::protobuf::DescriptorPool::TryFindFileInFallbackDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const descriptor.cc:1417 #18 0x1077d33a4 in google::protobuf::DescriptorPool::FindFileByName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const descriptor.cc:1038 #19 0x107d0fed7 in google::protobuf::compiler::CommandLineInterface::Run(int, char const* const*) command_line_interface.cc:654 #20 0x10778fb49 in main main.cc:60 #21 0x7fffb3222234 in start (libdyld.dylib:x86_64+0x5234) ==68429==Register values: rax = 0x00001c1600000000 rbx = 0x00007fff5846fd80 rcx = 0x0d1fec9cb58cc19b rdx = 0xf0a661bfd141ea44 rdi = 0x00007fff5846fc40 rsi = 0x0000000109a3f470 rbp = 0x00007fff5846fe10 rsp = 0x00007fff5846fd00 r8 = 0x000060b0000005c0 r9 = 0x0000604000005010 r10 = 0x00001c0800000a07 r11 = 0x000060b000000468 r12 = 0x000060b0000005c0 r13 = 0x0000100000000000 r14 = 0x000060b0000005e8 r15 = 0x9ddfea08eb382d69 AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV string:1272 in google::protobuf::FileOptions::Clear() ==68429==ABORTING /bin/sh: line 1: 68429 Abort trap: 6 ../../../../runtime_output_directory/protoc --cpp_out /Users/laurynas/percona/obj-mysql-8.0.3-san/rapid/plugin/x/generated/protobuf_lite -I /Users/laurynas/percona/obj-mysql-8.0.3-san/rapid/plugin/x/generated/protobuf_lite /Users/laurynas/percona/obj-mysql-8.0.3-san/rapid/plugin/x/generated/protobuf_lite/mysqlx.proto make[2]: *** [rapid/plugin/x/generated/protobuf_lite/mysqlx.pb.cc] Error 134 make[1]: *** [rapid/plugin/x/protocol/CMakeFiles/mysqlxmessages_lite.dir/all] Error 2 make: *** [all] Error 2
[25 Jan 2018 11:31]
Laurynas Biveinis
8.0.4 is affected too
[13 Mar 2018 3:52]
Laurynas Biveinis
See bug 89961
[12 Apr 2018 5:34]
Erlend Dahl
Fixed in 8.0.12 along with Bug#89961 add support for clang ubsan
[28 Feb 2019 0:17]
Manuel Ung
The segfault is from this protobuf issue: https://github.com/protocolbuffers/protobuf/issues/1450 The fix can be found here: https://github.com/protocolbuffers/protobuf/commit/cf14183bcd5485b4a71541599ddce0b35eb7135...