Bug #72225 HAVE_IB_LINUX_FUTEX test broken in debug builds, futexes disabled
Submitted: 3 Apr 2014 15:45 Modified: 25 Jul 2014 12:52
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.7.4 OS:Any
Assigned to: CPU Architecture:Any
Tags: cmake, innodb

[3 Apr 2014 15:45] Laurynas Biveinis
Description:
cmake -DWITH_DEBUG=ON
...
...
-- Performing Test HAVE_IB_LINUX_FUTEX
-- Performing Test HAVE_IB_LINUX_FUTEX - Failed
...

In the cmake log

/home/laurynas/percona/src/5.7/obj-debug/CMakeFiles/CMakeTmp/src.c: In function ‘futex_wait’:
/home/laurynas/percona/src/5.7/obj-debug/CMakeFiles/CMakeTmp/src.c:9:2: error: implicit declaration of function ‘syscall’ [-Werror=implicit-function-declaration]
  return(syscall(SYS_futex, futex, FUTEX_WAIT_PRIVATE, v, NULL, NULL, 0));
  ^
cc1: all warnings being treated as errors

How to repeat:
See above

Suggested fix:
$ bzr diff
=== modified file 'storage/innobase/innodb.cmake'
--- storage/innobase/innodb.cmake	2014-02-26 05:42:26 +0000
+++ storage/innobase/innodb.cmake	2014-04-01 21:17:13 +0000
@@ -205,6 +205,7 @@
   #include <errno.h>
   #include <assert.h>
   #include <linux/futex.h>
+  #include <unistd.h>
   #include <sys/syscall.h>
 
    int futex_wait(int* futex, int v) {
[5 Apr 2014 8:21] MySQL Verification Team
Hello Laurynas,

Thank you for the bug report.
Verified as described.

Thanks,
Umesh
[25 Jul 2014 12:52] Daniel Price
Fixed as of the upcoming 5.7.5 release, and here's the changelog entry:

Included "unistd.h" in "innodb.cmake" to enable futexes in debug builds.

Thank you for the bug report.