Skip to content
Permalink
Browse files
MDEV-12144 Signal 6 crash corrupts ibd files
Avoid using STDERR_FILENO. The server uses freopen(stderr),
so stderr can be on any file descriptor.
  • Loading branch information
vuvova committed Jul 15, 2017
1 parent 7338d3f commit 0375f2e
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 5 deletions.
@@ -421,9 +421,8 @@ extern "C" int madvise(void *addr, size_t len, int behav);
#define SIGNAL_HANDLER_RESET_ON_DELIVERY
#endif

#ifndef STDERR_FILENO
#define STDERR_FILENO fileno(stderr)
#endif
/* don't assume that STDERR_FILENO is 2, mysqld can freopen */
#undef STDERR_FILENO

/*
Deprecated workaround for false-positive uninitialized variables
@@ -143,7 +143,7 @@ static int no_close(void *cookie __attribute__((unused)))
/*
A hack around a race condition in the implementation of freopen.
The race condition steams from the fact that the current fd of
The race condition stems from the fact that the current fd of
the stream is closed before its number is used to duplicate the
new file descriptor. This defeats the desired atomicity of the
close and duplicate of dup2().
@@ -744,7 +744,7 @@ void my_safe_print_str(const char *val, int len)

size_t my_write_stderr(const void *buf, size_t count)
{
return (size_t) write(STDERR_FILENO, buf, count);
return (size_t) write(fileno(stderr), buf, count);
}


0 comments on commit 0375f2e

Please sign in to comment.