[MDEV-16548] Innodb fails to start on older kernels that don't support F_DUPFD_CLOEXEC Created: 2018-06-21 Updated: 2019-05-24 Resolved: 2018-11-08 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Affects Version/s: | 10.1.34, 10.2.16, 10.3.8 |
| Fix Version/s: | N/A |
| Type: | Bug | Priority: | Major |
| Reporter: | Nicholas Jackson | Assignee: | Marko Mäkelä |
| Resolution: | Won't Fix | Votes: | 2 |
| Labels: | None | ||
| Environment: |
Linux kernels older than 2.6.24 |
||
| Issue Links: |
|
||||||||
| Description |
|
After 10.1.34 was released, we have received several reports of systems using the community repositories unable to start innodb with the error:
An strace shows:
Seems that this was introduced in https://github.com/MariaDB/server/commit/bbee025370 Likely need a runtime check added to ensure F_DUPFD_CLOEXEC is supported by the kernel. Haven't checked what other versions may be affected, but there are likely others. |
| Comments |
| Comment by Sergei Golubchik [ 2018-06-22 ] | |||||||||||||||
|
What Linux distribution is it? | |||||||||||||||
| Comment by Jesse Asklund [ 2018-06-24 ] | |||||||||||||||
|
This is being seen happening on CentOS distributions. We've primarily seen this happen on Virtuozzo environments where the host node is running older kernels even though the tenants are using modern OS versions. | |||||||||||||||
| Comment by Maurice Bizzarri [ 2018-06-25 ] | |||||||||||||||
|
This happened to me on my CENTOS 6.6 virtuozzo VPS I rent from GoDaddy. A rollback to 10.1.33 fixed it. | |||||||||||||||
| Comment by Ryan Pendleton [ 2018-06-27 ] | |||||||||||||||
|
This is also happening to me on a GoDaddy CentOS 6.6 VPS with cPanel. I'm seeing the issue with 10.1.34 and 10.2.16, both of which were automatically upgraded by cPanel. | |||||||||||||||
| Comment by Matthew Swift [ 2018-06-27 ] | |||||||||||||||
|
Also killed a GoDaddy CentOS 6.9 VPS. Problem started with cPanel auto update from 10.1.33 to 10.1.34. A manual update to MariaDB 10.2 (i.e., 10.2.15) via WHM interface resolved the problem. I didn't understand why. Two days later cPanel auto-updates to 10.2.16 and everything is down again. workaround: turn off automatic operating system package updates in WHM (Server Configuration -> Update Preferences) and: % yum downgrade MariaDB-server-10.2.15 MariaDB-client-10.2.15 MariaDB-common-10.2.15 MariaDB-compat-10.2.15 MariaDB-devel-10.2.15 MariaDB-shared-10.2.15 FYI % rpm --query centos-release % uname -r | |||||||||||||||
| Comment by Daniel Black [ 2018-08-07 ] | |||||||||||||||
|
When I added it I didn't suspect anyone was running such an old version. It was added in 2.6.24 (http://man7.org/linux/man-pages/man2/fcntl.2.html). Alternate fix: https://github.com/MariaDB/server/pull/762 | |||||||||||||||
| Comment by Jan Lindström (Inactive) [ 2018-08-07 ] | |||||||||||||||
|
https://github.com/MariaDB/server/commit/517009ca0fa5f0e5b48b3d244a0b5bb0c44e90a8 | |||||||||||||||
| Comment by Daniel Black [ 2018-08-08 ] | |||||||||||||||
|
jplindst I don't think that helps. Its not a runtime check. RHEL/Centos6 by default use Linux version 2.6.32-220.17.1.el6.x86_64 (from the output of the BB kernel log). GoDaddy in their silliness have kept a RHEL/Cento5 Perhaps some runtime like;
CPU Branch predication will minimise the performance impacts and leave the PR above for a development branch to remove the dup/fcntl syscall entirely. Note to users:
Product offering question: | |||||||||||||||
| Comment by Daniel Black [ 2018-08-22 ] | |||||||||||||||
|
jplindst, why was it merged? It doesn't help packages because they are built on a 2.6.32 kernel. You've only help people who want to compile it themselves on an antiquated kernel. | |||||||||||||||
| Comment by Jan Lindström (Inactive) [ 2018-11-07 ] | |||||||||||||||
|
In above commt I added CHECK_C_SOURCE where fcntl(fd, F_DUPFD_CLOEXEC, 0); is used and we define HAVE_IB_F_DUPFD_CLOEXEC only if call succeeds. In InnoDB then we use #if defined(F_DUPFD_CLOEXEC) && defined(HAVE_IB_F_DUPFD_CLOEXEC). If that is not enough I do not know what to do. | |||||||||||||||
| Comment by Marko Mäkelä [ 2018-11-07 ] | |||||||||||||||
|
danblack, as far as I can tell, nothing was merged yet. The compile-time check that you added in
I agree with you that replacing the above compile-time check with a little more sophisticated compile-time check is not helping anyone who uses binary packages that were compiled on a newer kernel. Theoretically, we could add a run-time check (an if before the #else), but then we would have to test that on an antiquated kernel, preferably in our continuous integration system. In the end, it boils down to the MariaDB platform roadmap. https://mariadb.org/about/maintenance-policy/ does not say anything about underlying operating systems. I believe that we try to support all supported versions on all ‘relevant’ operating system platforms. According to https://wiki.centos.org/HowTos/EOL the support of CentOS 5 ended on March 31, 2017, more than 11 months before | |||||||||||||||
| Comment by Daniel Black [ 2018-11-07 ] | |||||||||||||||
|
I agree marko, adding testing framework for unsupported kernels that happen to map to the policies of single VPS provider seems a little extreme. The source compile could work (if they use 2.6.18 headers) for these users but that may be beyond what I see as the normal demographic for GoDaddy users.
| |||||||||||||||
| Comment by Marko Mäkelä [ 2018-11-08 ] | |||||||||||||||
|
The oldest GNU/Linux distributions that MariaDB Corporation supports are as follows:
We also support ‘Generic Linux’, but I would expect that to refer to a reasonably recent kernel. Linux "kernel 2.6.32 was released on December 3, 2009 already. The out-of-support Linux kernel 2.6.18 was released on September 20, 2006. Because it does not make sense to add a run-time check for an out-of-support Linux kernel that is more than 12 years old, I am closing this ticket as ‘Won’t Fix’. | |||||||||||||||
| Comment by Sergey Vojtovich [ 2019-05-24 ] | |||||||||||||||
|
Fixed in 10.5. |