mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug #43410 --skip-core-file has no effect if core file size is set
Would not prevent mysqld from core dumping Passes --nocore arg to safe_process, which then sets rlimit core to 0 for child
This commit is contained in:
@ -117,6 +117,7 @@ sub new {
|
||||
my $output = delete($opts{'output'});
|
||||
my $error = delete($opts{'error'});
|
||||
my $verbose = delete($opts{'verbose'});
|
||||
my $nocore = delete($opts{'nocore'});
|
||||
my $host = delete($opts{'host'});
|
||||
my $shutdown = delete($opts{'shutdown'});
|
||||
my $user_data= delete($opts{'user_data'});
|
||||
@ -137,6 +138,7 @@ sub new {
|
||||
push(@safe_args, $safe_script) if defined $safe_script;
|
||||
|
||||
push(@safe_args, "--verbose") if $verbose > 0;
|
||||
push(@safe_args, "--nocore") if $nocore;
|
||||
|
||||
# Point the safe_process at the right parent if running on cygwin
|
||||
push(@safe_args, "--parent-pid=".Cygwin::pid_to_winpid($$)) if IS_CYGWIN;
|
||||
|
@ -45,6 +45,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@ -149,7 +150,8 @@ int main(int argc, char* const argv[] )
|
||||
char* const* child_argv= 0;
|
||||
pid_t own_pid= getpid();
|
||||
pid_t parent_pid= getppid();
|
||||
|
||||
bool nocore = false;
|
||||
|
||||
/* Install signal handlers */
|
||||
signal(SIGTERM, handle_signal);
|
||||
signal(SIGINT, handle_signal);
|
||||
@ -181,6 +183,9 @@ int main(int argc, char* const argv[] )
|
||||
start++; /* Step past = */
|
||||
if ((parent_pid= atoi(start)) == 0)
|
||||
die("Invalid value '%s' passed to --parent-id", start);
|
||||
} else if ( strcmp(arg, "--nocore") == 0 )
|
||||
{
|
||||
nocore = true; // Don't allow the process to dump core
|
||||
}
|
||||
else
|
||||
die("Unknown option: %s", arg);
|
||||
@ -218,6 +223,15 @@ int main(int argc, char* const argv[] )
|
||||
// it and any childs(that hasn't changed group themself)
|
||||
setpgid(0, 0);
|
||||
|
||||
if (nocore)
|
||||
{
|
||||
struct rlimit corelim = { 0, 0 };
|
||||
if (setrlimit (RLIMIT_CORE, &corelim) < 0)
|
||||
{
|
||||
message("setrlimit failed, errno=%d", errno);
|
||||
}
|
||||
}
|
||||
|
||||
// Signal that child is ready
|
||||
buf= 37;
|
||||
write(pfd[1], &buf, 1);
|
||||
|
@ -190,6 +190,8 @@ my $build_thread= 0;
|
||||
my $opt_record;
|
||||
my $opt_report_features;
|
||||
|
||||
my $opt_skip_core;
|
||||
|
||||
our $opt_check_testcases= 1;
|
||||
my $opt_mark_progress;
|
||||
|
||||
@ -4008,6 +4010,7 @@ sub mysqld_arguments ($$$) {
|
||||
mtr_add_arg($args, "%s", $arg);
|
||||
}
|
||||
}
|
||||
$opt_skip_core = $found_skip_core;
|
||||
if ( !$found_skip_core )
|
||||
{
|
||||
mtr_add_arg($args, "%s", "--core-file");
|
||||
@ -4105,6 +4108,7 @@ sub mysqld_start ($$) {
|
||||
error => $output,
|
||||
append => 1,
|
||||
verbose => $opt_verbose,
|
||||
nocore => $opt_skip_core,
|
||||
host => undef,
|
||||
shutdown => sub { mysqld_stop($mysqld) },
|
||||
);
|
||||
|
Reference in New Issue
Block a user