| Bug #82515 | MySQL 5.7.1{3,4} does not compile ob gcc 6.1.1 | ||
|---|---|---|---|
| Submitted: | 9 Aug 2016 15:01 | Modified: | 26 Sep 2016 22:15 |
| Reporter: | Tomasz Kłoczko | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S2 (Serious) |
| Version: | 5.7.13, 5.7.14, 5.7.15 | OS: | Fedora (rawhide) |
| Assigned to: | Jon Olav Hauglid | CPU Architecture: | Any |
| Tags: | myisam | ||
[9 Aug 2016 15:09]
Tomasz Kłoczko
Just realised that it may be problem with dirent.h from rawhide glibc. Opened https://bugzilla.redhat.com/show_bug.cgi?id=1365576
[9 Aug 2016 16:59]
Tomasz Kłoczko
Looks like it is a bug in mysql 5.7 code. Comment from https://bugzilla.redhat.com/show_bug.cgi?id=1365576 /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/my_lib.c:127:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations] Please stop using readdir_r, it's completely useless. Status: NEW → CLOSED Resolution: --- → NOTABUG Last Closed: 2016-08-09 11:25:12
[10 Aug 2016 1:14]
MySQL Verification Team
I couldn't repeat: [100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o [100%] Linking CXX executable mysql_embedded [100%] Built target mysql_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 [100%] Linking CXX executable my_safe_process [100%] Built target my_safe_process [miguel@f24 mysql-5.7.14]$ gcc --version gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3) Copyright (C) 2016 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@f24 mysql-5.7.14]$ sql/mysqld --version sql/mysqld Ver 5.7.14 for Linux on x86_64 (Source distribution) [miguel@f24 mysql-5.7.14]$
[10 Aug 2016 7:09]
Terje Røsten
Hi Tomasz! Problem is due to change in glibc 2.24 which contain the following change: * The readdir_r and readdir64_r functions have been deprecated. It is recommended to use readdir and readdir64 instead. See for example for more information: https://lwn.net/Articles/696469/ To reproduce a system with glibdc 2.24 is needed, using GCC 6.1.1 is not enough. Fedora rawhide (to be Fedora 25) is one such system.
[24 Sep 2016 17:28]
Tomasz Kłoczko
Here is longer comment what needs to be done: https://womble.decadent.org.uk/readdir_r-advisory.html Hist checked 5.7.15 and seems problem still is not solved
[24 Sep 2016 17:30]
Tomasz Kłoczko
BTW seems not fixing this issue has some secutity consequences.
[26 Sep 2016 22:15]
Paul DuBois
Posted by developer: Noted in 5.7.17 changelog. MySQL now uses readdir() rather than readdir_r(). The latter has been deprecated since glibc 2.24 and caused debug builds of MySQL and builds using GCC 6.1.1 to fail.
[28 Sep 2016 15:23]
Paul DuBois
Noted in 8.0.1 changelog.

Description: Just been trying to rebuild mysql 5.7.1{3,4} on current Fedora rawhide where is gcc 6.1.1. Compilation seems it fails in myisam support: [ 7%] Building C object mysys/CMakeFiles/mysys.dir/my_lib.c.o cd /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/debug/mysys && /usr/bin/cc -DHAVE_CONFIG_H -DHAVE_LIBEVENT1 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/debug/include -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/extra/rapidjson/include -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/debug/libbinlogevents/include -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/libbinlogevents/export -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/include -I/home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys -g -pipe -Wall -Werror=format-security -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fPIC -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement -Werror -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DENABLED_DEBUG_SYNC -o CMakeFiles/mysys.dir/my_lib.c.o -c /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/my_lib.c /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/my_lib.c: In function 'my_dir': /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/my_lib.c:127:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations] while (!(READDIR(dirp,(struct dirent*) dirent_tmp,dp))) ^~~~~ In file included from /usr/include/features.h:368:0, from /usr/include/stdio.h:27, from /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/include/my_global.h:41, from /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/mysys_priv.h:19, from /home/tkloczko/rpmbuild/BUILD/mysql-5.7.14/mysql-5.7.14/mysys/my_lib.c:19: /usr/include/dirent.h:189:12: note: declared here extern int __REDIRECT (readdir_r, ^ cc1: all warnings being treated as errors How to repeat: Try to rebuild latest mysql using gcc 6.1.1