summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2018-06-27 17:01:09 +0400
committerSergey Vojtovich <svoj@mariadb.org>2018-06-27 17:06:00 +0400
commitbf4244d1a0d921defbd92deb1e54b59ee1ce35b4 (patch)
tree0abe438698cd7cb8ece2123cdceb951cc2c09952
parentcc8772f33e8f94844e32f3aa79e5f41d784f8ec0 (diff)
downloadmariadb-git-bf4244d1a0d921defbd92deb1e54b59ee1ce35b4.tar.gz
MDEV-8540 - Crash on server shutdown since 10.0.16
Only close stdin if it was open initinally. Otherwise we may close file descriptor which is reused for different puprose (specifically for binlog index file in case of this bug).
-rw-r--r--sql/mysqld.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index fb49c05def5..d760986a303 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -5149,6 +5149,9 @@ int win_main(int argc, char **argv)
int mysqld_main(int argc, char **argv)
#endif
{
+ /* We can't close stdin just now, because it may be booststrap mode. */
+ bool please_close_stdin= fcntl(STDIN_FILENO, F_GETFD) >= 0;
+
/*
Perform basic thread library and malloc initialization,
to be able to read defaults files and parse options.
@@ -5492,7 +5495,9 @@ int mysqld_main(int argc, char **argv)
(char*) "" : mysqld_unix_port),
mysqld_port,
MYSQL_COMPILATION_COMMENT);
- fclose(stdin);
+ /* Only close stdin if it was open initinally. */
+ if (please_close_stdin)
+ fclose(stdin);
#if defined(_WIN32) && !defined(EMBEDDED_LIBRARY)
Service.SetRunning();
#endif