Bug #79236 | Enabling Undefined Behavior Sanitizer fails linking of *_embedded executables | ||
---|---|---|---|
Submitted: | 11 Nov 2015 15:37 | Modified: | 8 Mar 2016 9:48 |
Reporter: | Laurynas Biveinis (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
Version: | 5.7.9,5.7.11 | OS: | Ubuntu (15.10) |
Assigned to: | CPU Architecture: | Any | |
Tags: | ubsan |
[11 Nov 2015 15:37]
Laurynas Biveinis
[11 Nov 2015 15:44]
Laurynas Biveinis
With make -k the same happens for Linking CXX executable mysql_embedded ../libmysqld.a(sql_base.cc.o):(.data.rel+0x98): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0xcd8): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7218): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7298): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7458): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysql_embedded.dir/build.make:140: recipe for target 'libmysqld/examples/mysql_embedded' failed make[2]: *** [libmysqld/examples/mysql_embedded] Error 1 make[2]: Target 'libmysqld/examples/CMakeFiles/mysql_embedded.dir/build' not remade because of errors. CMakeFiles/Makefile2:7126: recipe for target 'libmysqld/examples/CMakeFiles/mysql_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysql_embedded.dir/all] Error 2 Scanning dependencies of target mysqltest_embedded Linking CXX executable mysqltest_embedded ../libmysqld.a(sql_base.cc.o):(.data.rel+0x98): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0xcd8): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7218): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7298): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7458): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/build.make:88: recipe for target 'libmysqld/examples/mysqltest_embedded' failed make[2]: *** [libmysqld/examples/mysqltest_embedded] Error 1 make[2]: Target 'libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/build' not remade because of errors. CMakeFiles/Makefile2:7161: recipe for target 'libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/all] Error 2
[11 Nov 2015 21:21]
MySQL Verification Team
Compiling on Debian
Attachment: buildbug79236.txt (text/plain), 152.96 KiB.
[11 Nov 2015 21:24]
MySQL Verification Team
Thank you for the bug repoet. I couldn't repeat on Debian I attached the compiling output so you can give me a tip if I did something wrong. miguel@debianvb:~/mysql-5.7.9$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.2 (jessie) Release: 8.2 Codename: jessie miguel@debianvb:~/mysql-5.7.9$ gcc --version gcc (Debian 4.9.2-10) 4.9.2 Scanning dependencies of target mysql_client_test_embedded [100%] Building C object libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/__/__/testclients/mysql_client_test.c.o Linking CXX executable mysql_client_test_embedded [100%] Built target mysql_client_test_embedded Scanning dependencies of target mysql_embedded [100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/completion_hash.cc.o [100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/mysql.cc.o [100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o Linking CXX executable mysql_embedded [100%] Built target mysql_embedded Scanning dependencies of target mysqltest_embedded [100%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o Linking CXX executable mysqltest_embedded [100%] Built target mysqltest_embedded Scanning dependencies of target my_safe_process [100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o Linking CXX executable my_safe_process [100%] Built target my_safe_process
[11 Nov 2015 21:29]
MySQL Verification Team
miguel@debianvb:~/mysql-5.7.9$ dpkg -l libubsan* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===================================-======================-======================-============================================================================ ii libubsan0:amd64 4.9.2-10 amd64 UBSan -- undefined behaviour sanitizer (runtime) un libubsan0-dbg <none> <none> (no description available)
[12 Nov 2015 0:47]
MySQL Verification Team
Thank you for the bug report. /usr/bin/ar: creating /home/miguel/mysql-5.7.9/libmysqld/libmysqld.a [100%] Built target mysqlserver Scanning dependencies of target mysql_client_test_embedded [100%] Building C object libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/__/__/testclients/mysql_client_test.c.o Linking CXX executable mysql_client_test_embedded ../libmysqld.a(sql_base.cc.o):(.data.rel+0x98): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0xcd8): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7218): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7298): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_base.cc.o):(.data.rel+0x7458): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/build.make:88: recipe for target 'libmysqld/examples/mysql_client_test_embedded' failed make[2]: *** [libmysqld/examples/mysql_client_test_embedded] Error 1 CMakeFiles/Makefile2:7783: recipe for target 'libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all] Error 2 Makefile:136: recipe for target 'all' failed make: *** [all] Error 2 miguel@ubuntu1510:~/mysql-5.7.9$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 15.10 Release: 15.10 Codename: wily miguel@ubuntu1510:~/mysql-5.7.9$ gcc --version gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. miguel@ubuntu1510:~/mysql-5.7.9$ dpkg -l libubsan* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============================-====================-====================-==================================================================== ii libubsan0:amd64 5.2.1-22ubuntu2 amd64 UBSan -- undefined behaviour sanitizer (runtime) un libubsan0-dbg <none> <none> (no description available) miguel@ubuntu1510:~/mysql-5.7.9$
[12 Nov 2015 16:53]
Paul DuBois
Noted in 5.7.11, 5.8.0 changelogs. Some replication-only code was not protected with #ifdef and failed to compile with the WITH_UBSAN CMake option enabled.
[7 Mar 2016 7:27]
Laurynas Biveinis
Re-opening, with 5.7.11 I still see the same: $ cmake ../mysql-5.7.11/ -DBUILD_CONFIG=mysql_release -DWITH_DEBUG=ON -DWITH_UBSAN=ON -DWITH_BOOST=~/mysql-boost ... $ make ... inking CXX executable mysql_embedded Linking CXX executable mysqltest_embedded Linking CXX executable mysql_client_test_embedded ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1818): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1898): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1918): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysql_embedded.dir/build.make:138: recipe for target 'libmysqld/examples/mysql_embedded' failed make[2]: *** [libmysqld/examples/mysql_embedded] Error 1 CMakeFiles/Makefile2:7385: recipe for target 'libmysqld/examples/CMakeFiles/mysql_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysql_embedded.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1818): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1898): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1918): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/build.make:86: recipe for target 'libmysqld/examples/mysqltest_embedded' failed make[2]: *** [libmysqld/examples/mysqltest_embedded] Error 1 CMakeFiles/Makefile2:7420: recipe for target 'libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/all] Error 2 ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1818): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1898): undefined reference to `typeinfo for Relay_log_info' ../libmysqld.a(sql_class.cc.o):(.data.rel+0x1918): undefined reference to `typeinfo for Relay_log_info' collect2: error: ld returned 1 exit status libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/build.make:86: recipe for target 'libmysqld/examples/mysql_client_test_embedded' failed make[2]: *** [libmysqld/examples/mysql_client_test_embedded] Error 1 CMakeFiles/Makefile2:7349: recipe for target 'libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all' failed make[1]: *** [libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all] Error 2 Makefile:146: recipe for target 'all' failed make: *** [all] Error 2
[7 Mar 2016 7:28]
Laurynas Biveinis
updating version field
[8 Mar 2016 9:48]
Jon Olav Hauglid
Should be fixed again in the next 5.7 release.