Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.3(EOL)
-
None
-
macOS 10.13.4
--
clang -v
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
--
uname -a
Darwin blackbox 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 x86_64macOS 10.13.4 -- clang -v Apple LLVM version 9.1.0 (clang-902.0.39.1) Target: x86_64-apple-darwin17.5.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -- uname -a Darwin blackbox 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 x86_64
Description
This is a master issue used to track all the build issues on latest macOS 10.13.4, which fails in multiple storage engines. Steps for building followed from MariaDB.org
Attaching individual errors bellow:
Inno
/Users/shinnok/Work/mariadb/server/storage/innobase/include/sync0policy.h:53:4: error: cannot initialize a member subobject of type 'ulint'
|
(aka 'unsigned long') with an rvalue of type 'os_thread_id_t' (aka '_opaque_pthread_t *')
|
m_thread_id(os_thread_id_t(ULINT_UNDEFINED))
|
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/innobase/include/sync0policy.h:79:4: error: cannot initialize a parameter of type 'int64' (aka 'long long') with
|
an rvalue of type 'os_thread_id_t' (aka '_opaque_pthread_t *')
|
my_atomic_storelint(&m_thread_id, os_thread_get_curr_id());
|
RocksDB
[ 79%] Building CXX object storage/rocksdb/CMakeFiles/mysql_ldb.dir/tools/mysql_ldb.cc.o
|
[ 79%] Linking CXX executable mysql_ldb
|
Undefined symbols for architecture x86_64:
|
"__db_flush_", referenced from:
|
myrocks::rdb_get_global_perf_counters(myrocks::Rdb_perf_counters*) in librocksdb_aux_lib.a(rdb_perf_context.cc.o)
|
Was missing lib to dbug lib.
TokuDB
TokuDB especially is in a bad shape on macOS, maybe it didn't receive much attention in that regard.
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/ft-ops.cc:830:17: error: format specifies type 'long' but the argument has type 'int64_t'
|
(aka 'long long') [-Werror,-Wformat]
|
blocknum.b);
|
^~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/ft-ops.cc:840:17: error: format specifies type 'long' but the argument has type 'int64_t'
|
(aka 'long long') [-Werror,-Wformat]
|
blocknum.b,
|
^~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc:1177:13: error: format specifies type 'long' but the argument
|
has type 'int64_t' (aka 'long long') [-Werror,-Wformat]
|
blocknum.b,
|
^~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc:1204:13: error: format specifies type 'long' but the argument
|
has type 'int64_t' (aka 'long long') [-Werror,-Wformat]
|
node->blocknum.b,
|
^~~~~~~~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc:1260:13: error: format specifies type 'long' but the argument
|
has type 'int64_t' (aka 'long long') [-Werror,-Wformat]
|
node->blocknum.b,
|
^~~~~~~~~~~~~~~~
|
...
|
[ 84%] Building CXX object storage/tokudb/PerconaFT/ft/CMakeFiles/ft_static.dir/serialize/ft-serialize.cc.o
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc:736:13: error: format specifies type 'unsigned long' but the
|
argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat]
|
dump_state_of_toku_deserialize_ft_from();
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc:666:13: note: expanded from macro
|
'dump_state_of_toku_deserialize_ft_from'
|
max_acceptable_lsn.lsn, \
|
^~~~~~~~~~~~~~~~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc:736:13: error: format specifies type 'unsigned long' but the
|
argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat]
|
dump_state_of_toku_deserialize_ft_from();
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
...
|
Needs proper %ll format specifier.
[ 84%] Building CXX object storage/tokudb/PerconaFT/ft/CMakeFiles/ft_static.dir/txn/txn.cc.o
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/txn/txn.cc:271:19: error: missing field '__opaque' initializer
|
[-Werror,-Wmissing-field-initializers]
|
.state_cond = ZERO_COND_INITIALIZER, // Not TOKU_COND_INITIALIZER
|
^
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/portability/toku_pthread.h:167:13: note: expanded from macro 'ZERO_COND_INITIALIZER'
|
{ 0 } \
|
^
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/txn/txn.cc:271:19: error: missing field 'psi_cond' initializer
|
[-Werror,-Wmissing-field-initializers]
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/portability/toku_pthread.h:168:5: note: expanded from macro 'ZERO_COND_INITIALIZER'
|
}
|
^
|
ZERO_COND_INITIALIZER is using wrong toku_cond_t struct initializer for first member of type pthread_cond_t and not considering the TOKU_PTHREAD_DEBUG case which has one extra struct member of type pfs_key_t.
[ 75%] Performing install step for 'build_lzma'
|
Making install in api
|
/bin/sh:maria/build-mariadb/storage/tokudb/PerconaFT/xz/src/build_lzma/build-aux/install-sh: Permission denied
|
This issue can be fixed by doing chmod +x for install-sh script. It is being discussed on the mailing list.
/Users/shinnok/Work/mariadb/server/storage/tokudb/tokudb_thread.h:378:13: error: use of undeclared identifier 'pthread_mutex_timedlock'
|
int r = pthread_mutex_timedlock(&_mutex, &waittime);
|
^
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/tokudb_thread.h:486:13: error: use of undeclared identifier 'pthread_mutex_timedlock'
|
int r = pthread_mutex_timedlock(&_mutex, &waittime);
|
^
|
pthread_mutex_timedlock() is not available in pthreads for Mac, as it's not part of the POSIX pthreads spec, I need a suggestion on how to proceed.The encompassing event_t::wait() method seems to be unused. Could be removed? Otherwise rewrite without timedlock.
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/util/omt.cc:946:13: error: taking address of packed member 'value' of class or structure 'toku::omt_internal::omt_node_templated<referenced_xid_tuple, false>' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
|
*out = &n->value;
|
^~~~~~~~
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/util/omt.cc:871:13: note: in instantiation of member function 'toku::omt<referenced_xid_tuple, referenced_xid_tuple *, false>::copyout' requested here
|
copyout(value, &n);
|
^
|
In file included from /Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/ft/txn/txn.h:46:
|
In file included from /Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/util/omt.h:759:
|
/Users/shinnok/Work/mariadb/server/storage/tokudb/PerconaFT/util/omt.cc:762:24: error: taking address of packed member 'value' of class or structure 'toku::omt_internal::omt_node_templated<referenced_xid_tuple, false>' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
|
int r = f(&n.value, idx_root, iterate_extra);
|
^~~~~~~
|
^
|
2 errors generated.
|
This is happening because omt_ classes are declared as packed and clang has -Waddress-of-packed-member when passing the address of a packed member, a legit concern on different architectures. The easiest way to get rid of the errors is to remove the packed attribute from said structs. Also reported MDEV-14223.
[ 87%] Linking CXX shared library libtokufractaltree.dylib
|
Undefined symbols for architecture x86_64:
|
"_debug_sync_C_callback_ptr", referenced from:
|
toku_debug_sync(tokutxn*, char const*) in ydb_row_lock.cc.o
|
|
....
|
Was missing link to dbug lib.
[ 88%] Linking CXX shared library libtokufractaltree.dylib
|
Undefined symbols for architecture x86_64:
|
"_opt_debug_sync_timeout", referenced from:
|
toku_debug_sync(tokutxn*, char const*) in ydb_row_lock.cc.o
|
ld: symbol(s) not found for architecture x86_64
|
Not sure what's happening here, I see that opt_debug_sync_timeout is declared as extern, however no immediate definition is available. It is used to inform the compiler via __builtin_expect branch prediction on line toku_debug_sync.h:66:
if (likely(!opt_debug_sync_timeout))
|
return;
|
Attachments
Issue Links
- relates to
-
MDEV-14223 clang build failure in PerconaFT
-
- Closed
-
-
MDEV-12435 test: main.mysqld_option_err - mysqld segfault
-
- Closed
-
Hmm, that's interesting. Looks like MSVC complains that it can't reinterpret_cast from DWORD (32b unsigned) which is returned by GetCurrentThreadId() to ULINT size_t ULONG_PTR (64b unsigned on on x64) [1]. However, on macOS the complaint is that you cannot convert from opaque type returned by pthread to size_t (only fixable via reinterpret_cast)...
Maybe needs more consideration to not use cast after all. I would be curious about the Linux error too, not sure how to dig up the buildbot builds for that specific commit though. wlad Do you have that at hand in any way?
[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx