1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-21 21:22:27 +03:00
Commit Graph

430 Commits

Author SHA1 Message Date
3d27f6d7f4 Merge branch '10.3' into 10.4 2023-04-21 09:10:58 +02:00
f812f8e1ab MDEV-30475 Windows, mtr - Remove outdated instructions on how to install post-mortem debugger
Also, use standard C:\symbols location for OS debugging symbols cache,
rather than own invention C:\cdb_symbols.
2023-01-26 12:32:15 +01:00
fb0808c450 Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
9f8fc983d5 MDEV-30242 MTR fails to report stack traces of all threads by default
An unfortunate change to the default behavior of the handling of
core dumps was implemented in
commit e9be5428a2
by making MTR_PRINT_CORE=small the default value, that is, to
only display the stack trace of one thread in crash reports.
Many if not most failures that occur in regression tests are
sporadic and involve race conditions or deadlocks. To be able to
analyze such failures, having the stack traces of all active threads
is a must, because CI environments typically do not save any core dumps.

While the environment variable MTR_PRINT_CORE could be set in CI
environments to compensate for the unfortunate change, it is better
to revert to the old default (dumping all threads) so that
no explicit action will be required from maintainers of independent
CI systems. In that case, if something fails once in a blue moon,
we can have some hope of diagnosing it based on the output.

We fix this regression by defaulting the unset environment variable
MTR_PRINT_CORE to "medium".
2022-12-16 09:59:09 +02:00
fdf43b5c78 Merge 10.3 into 10.4 2022-12-13 11:37:33 +02:00
3d5ce0430b MDEV-29348 rpl.rpl_rewrt_db test fails with [gdb,manual-gdb] with wrong parsing
Reviewer: <serg@mariadb.com>
Closes PR #2244
2022-11-28 15:10:30 +01:00
65e8506ca9 Merge branch '10.3' into bb-10.4-release 2022-08-10 12:21:08 +02:00
122742897b my_safe_process: try to kill the process softly first
first SIGTERM and if the process didn't die in 10 seconds, SIGKILL it.

This allows various tools like `rr`, `gcov`, `gprof`, etc to flush
their data to disk properly
2022-08-10 09:14:17 +02:00
3bb36e9495 Merge branch '10.3' into 10.4 2022-07-27 11:02:57 +02:00
1bdcffb028 MDEV-29025 Refactoring: moved out core_wanted() out of mysql-test-run.pl 2022-07-18 23:16:17 +03:00
e9be5428a2 MDEV-28931 MTR prints detailed stack trace unconditionally
66832e3a introduced change that prints core dumps in very detailed
format. That's completely out of user-friendliness but serves as a
measure for debugging hard-reproducible bugs.

The proper way to implement this:

  1. it must be controlled by command-line and environment variable;
  2. detailed traces must be default for buildbots only, for user
     invocations normal stack traces should be printed.

Options for control are: MTR_PRINT_CORE and --print-core that accept
the following values:

  no	         Don't print core
  short	       	 Print stack trace of failed thread
  medium	 Print stack traces of all threads
  detailed       Print all stack traces with debug context
  custom:<code>  Use debugger commands <code> to print stack trace

Default setting is: short (see env_or_default() call in pre_setup())

For environment variable wrong values are silently ignored (falls back
to default setting, see env_or_default()).

Command-line option --print-core (or -C) overrides environment
variable. Its default value is 'short' if not specified explicitly
(same env_or_default() call in pre_setup()). Explicit values are
checked for validity.

--print-method option can specify by which debugger we print
cores. For Windows there is only one choice: cdb. For Unix the values
are: gdb, dbx, lldb, auto. Default value is: auto

In 'auto' we try to use all possible debuggers until success.
2022-07-18 23:16:17 +03:00
220fb6797b MDEV-28931 Debugger.pm readability fix
setup_boot_args(), setup_client_args(), setup_args() traversing
datastructures on each invocation. Even if performance is not
important to perl script (though it definitely saves some CO2), this
nonetheless provokes some code-reading questions. Reading and
debugging such code is not convenient.

The better way is to prepare all the data in advance in an easily
readable form as well as do the validation step before any further
processing.

Use mtr_report() instead of die() like the other code does.

TODO: do_args() does even more data processing magic. Prepare that
data according the above strategy in advance in pre_setup() if possible.
2022-07-18 23:16:17 +03:00
83f7d25c44 MDEV-28931 Cleanup: try GDB to print core first
Do we still need this Sun Studio hack?
2022-07-18 23:16:17 +03:00
a70a1cf3f4 Merge branch '10.3' into 10.4 2022-05-08 23:03:08 +02:00
6f6c74b0d1 Merge branch '10.2' into 10.3 2022-04-21 10:05:50 +02:00
66832e3a64 mtr: extend gdb backtace info
bt full - to include args and locals.

set print sevenbit on
  - it is more useful to be able to see the exact bytes
    (in case something is dumped as a string and not hexadecimal digits)
set print static-members off
  - there are many interesting (non-const) static members
set frame-arguments all
  - even non-printables are useful to see.

Let's make our bb logs give a little bit more detail on those
hard to reproduce bugs.

Tests on rhel7's gdb-7.6.1-120.el7
2022-04-14 19:55:26 +10:00
a576a1cea5 Merge branch '10.3' into 10.4 2022-01-30 09:46:52 +01:00
41a163ac5c Merge branch '10.2' into 10.3 2022-01-29 15:41:05 +01:00
a88a4336fc mtr failed to detect when a combination is forced
mtr detects a forced combination if the command line for a test already
includes all options from this combination. options are stored in a perl
hash as (key,value) pairs.

this breaks if the command line has two options with the same name,
like --plugin-load-add=foo --plugin-load-add=bar, and the combination
forces plugin foo.

In particular, this resulted in warnings when running
federated.federatedx_versioning test
2022-01-14 22:16:39 +01:00
47ab793d71 Merge 10.3 into 10.4 2021-11-09 08:40:14 +02:00
524b4a89da Merge 10.2 into 10.3 2021-11-09 08:26:59 +02:00
026984c360 MDEV-26949 --debug-gdb installs redundant signal handlers
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.
2021-11-01 10:29:58 +02:00
36f8cca6f3 Merge 10.3 into 10.4 2021-10-21 18:06:31 +03:00
f9b856b052 Merge 10.2 into 10.3 2021-10-21 17:39:34 +03:00
7d6617e966 MDEV-19129: Xcode compatibility update: mysql-test-run.pl: rename $opt_vs_config to $multiconfig to use with other cmake multiconfig generators 2021-10-21 16:48:00 +03:00
25a5ce367b Merge branch '10.3' into 10.4 2021-09-24 12:29:57 +02:00
ca7046dc19 MDEV-11499 mysqltest, Windows : improve diagnostics if server fails to shutdown
Create minidump when server fails to shutdown. If process is being
debugged, cause a debug break.

Moves some code which is part of safe_kill into mysys, as both safe_kill,
and mysqltest produce minidumps on different timeouts.

Small cleanup in wait_until_dead() - replace inefficient loop with a single
wait.
2021-09-24 11:49:28 +02:00
0464761126 Merge 10.3 into 10.4 2021-08-31 09:22:21 +03:00
e835cc851e Merge 10.2 into 10.3 2021-08-31 08:36:59 +03:00
600e494906 mtr: fix the check where a combination is pre-selected
if all options from a combination from the combinations file are already
present in the server's list of options, then don't try to run tests
in other combinations from this file.

old behavior was: if at least one option from a combination is
already present in the list...
2021-08-29 17:32:30 +02:00
7841a7eb09 Merge branch '10.3' into 10.4 2021-07-31 22:59:58 +02:00
6190a02f35 Merge branch '10.2' into 10.3 2021-07-21 20:11:07 +02:00
621fae3cbc MDEV-25802 mtr: race condition if the test quickly restarts twice
part II

need to tell SafeProcess not to collect the exited mysqld
in sleep_until_file_created(), so that it would be found in the
later wait_any_timeout() in run_testcase()

Removed a strange condition in SafeProcess::wait_one()
that treated return value of -1 from waitpid() as "process exists"
instead of as "no such child process" (see `perldoc -f waitpid`)
2021-07-06 16:12:13 +02:00
2301093f8f MDEV-25894: support AIX as a platform in mtr
Parital backport of 48938c57c7
so platform dependent AIX tests can be done.
2021-07-02 17:17:19 +10:00
3f2c4758b0 MDEV-25894: support AIX as a platform in mtr
Parital backport of 48938c57c7
so platform dependent AIX tests can be done.
2021-07-02 14:46:05 +10:00
77d8da57d7 Merge 10.3 into 10.4 2021-06-01 09:14:59 +03:00
950a220060 Merge 10.2 into 10.3 2021-06-01 08:40:59 +03:00
1638241e31 mtr: fix the debug printout
to print all arguments of _verbose(), not just the number of them
2021-05-27 17:36:32 +02:00
4240704abc Merge 10.3 into 10.4 2021-05-18 08:59:12 +03:00
ca3f497564 Merge 10.2 into 10.3, except MDEV-25682 2021-05-18 08:40:19 +03:00
ec348f555b mtr: --gdb mode, also quote ";", not only " " 2021-05-11 20:08:47 +02:00
8c73fab7f7 Merge 10.3 into 10.4 2021-05-10 09:52:01 +03:00
98e6159892 Merge 10.2 into 10.3 2021-05-10 09:09:50 +03:00
18fbe566bd mtr --gdb='commands' and restarts
if mysqld is restarted during a test, the debugger script
should be reused or overwritten, but not appended to the existing file
2021-05-08 18:02:34 +02:00
af781f1ac4 fix mtr --client-gdb to work
mysqltest has no --gdb option
2021-05-08 18:02:34 +02:00
7ae37ff74f Merge 10.3 into 10.4 2021-03-27 17:12:28 +02:00
3157fa182a Merge 10.2 into 10.3 2021-03-27 16:11:26 +02:00
0e96570171 Added missed ' -- ' between the end of the lldb command options and the beginning of the arguments. 2021-03-22 18:55:59 +07:00
8bab5bb332 Merge 10.3 into 10.4 2021-03-05 10:36:51 +02:00
ddbc612692 Merge 10.2 into 10.3 2021-03-03 09:41:50 +02:00