diff options
author | Magne Mahre <magne.mahre@sun.com> | 2010-02-14 19:12:58 +0100 |
---|---|---|
committer | Magne Mahre <magne.mahre@sun.com> | 2010-02-14 19:12:58 +0100 |
commit | 6f80e0697dc84b102ac5f940d6ca711c532d95c1 (patch) | |
tree | 9d5bb9f598d68ef5e7477a4d5672b2ed3210fac2 /configure.in | |
parent | 090bcbf016e56e08cd1ec693d34b2ad2f00b412b (diff) | |
download | mariadb-git-6f80e0697dc84b102ac5f940d6ca711c532d95c1.tar.gz |
Bug#48929 Error in Accept() if using many file descriptors
In POSIX systems, the file descriptor set used in the select(2)
system call is represented by a bit vector of size FD_SETSIZE.
When select(2) is used on file/socket descriptors with a value
that is beyond this size, unpredictable errors may occur.
In this case, the error happens when there are a large number
of tables that need repair. These tables are opened before
the sockets for incoming connections are acquired, resulting
in these sockets getting descriptor id which is higher than
FD_SETSIZE.
Replacing the call to select(2) with poll(2) fixes the problem,
as poll takes an array of the wanted descriptors, instead of
a bit vector.
MS Windows has a different implementation of 'select', and is not
affected by this bug.
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/configure.in b/configure.in index 9361052e2d9..9776fc12fe6 100644 --- a/configure.in +++ b/configure.in @@ -839,7 +839,7 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h ieeefp.h limits.h \ - memory.h pwd.h select.h \ + memory.h pwd.h select.h poll.h \ stdlib.h stddef.h \ strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \ sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \ |