summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-11-01 09:28:41 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2021-11-01 09:28:41 +0200
commitfc5a29fd9e6734f1e1d0f5e982b7931bb9fcb21f (patch)
tree54e558419d1b1dccf056ff2689e7a7a4d0c5672f
parent059797ed44007fe954cf47f6f09db78e60df16fd (diff)
downloadmariadb-git-bb-10.2-MDEV-26949.tar.gz
MDEV-26949 --debug-gdb installs redundant signal handlersbb-10.2-MDEV-26949
There is a server startup option --gdb a.k.a. --debug-gdb that requests signals to be set for more convenient debugging. Most notably, SIGINT (ctrl-c) will not be ignored, and you will be able to interrupt the execution of the server while GDB is attached to it. When we are debugging, the signal handlers that would normally display a terse stack trace are useless. When we are debugging with rr, the signal handlers may interfere with a SIGKILL that could be sent to the process by the environment, and ruin the rr replay trace, due to a Linux kernel bug https://lkml.org/lkml/2021/10/31/311 To be able to diagnose bugs in kill+restart tests, we may really need both a trace before the SIGKILL and a trace of the failure after a subsequent server startup. So, we had better avoid hitting the problem by simply not installing those signal handlers.
-rw-r--r--mysql-test/lib/My/Debugger.pm3
-rw-r--r--sql/mysqld.cc1
2 files changed, 2 insertions, 2 deletions
diff --git a/mysql-test/lib/My/Debugger.pm b/mysql-test/lib/My/Debugger.pm
index cc151b233d5..8d09189e766 100644
--- a/mysql-test/lib/My/Debugger.pm
+++ b/mysql-test/lib/My/Debugger.pm
@@ -147,7 +147,8 @@ sub do_args($$$$$) {
my %vars = (
vardir => $::opt_vardir,
exe => $$exe,
- args => join(' ', map { quote_from_mtr $_ } @$$args, '--loose-gdb'),
+ args => join(' ', map { quote_from_mtr $_ } @$$args,
+ '--loose-debug-gdb', '--loose-skip-stack-trace'),
input => $input,
script => "$::opt_vardir/tmp/${k}init.$type",
log => "$::opt_vardir/log/$type.$k",
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index d723c36e4cb..d7a44138780 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -9740,7 +9740,6 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
{
/* Allow break with SIGINT, no core or stack trace */
test_flags|= TEST_SIGINT;
- opt_stack_trace= 1;
test_flags&= ~TEST_CORE_ON_SIGNAL;
}
/* Set global MyISAM variables from delay_key_write_options */