mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 15:24:16 +01:00
0eae06c430
Reason: inconsistent compilation, federatedx is compiled without SAFEMALLOC flag, while anything else is compiled with SAFEMALLOC. As a consequence, my_hash_init used inside federatedx initialization does not provide correct caller info parameters (file, line) , so they are initialized with whatever is on stack. When info about allocated memory is output in COM_DEBUG command, the server crashes trying to output string starting at 0xcccccccccccccccc. The fix is to remove SAFEMALLOC preprocessor flags from every CMakeLists.txt, except the top-level one. Also, SAFEMALLOC is not defined by default now, instead there is WITH_DEBUG_FULL CMake option which adds -DSAFEMALLOC to C and C++ flags in debug compilation. This option is off by default, because 1) Debug C runtime already has heap debugging builtin with overwrite and leak detection 2)safemalloc considerably slows down the tests. Note also that - SAFEMALLOC is gone in MySQL5.5 - On Windows, heap related overflows can also be found using free pageheap utility (that is also part of application verifier). This is even more efficient if there are no other layers on top of Windows heap allocator, e.g it is most efficient with release version. |
||
---|---|---|
.. | ||
examples | ||
mysys | ||
mytap | ||
strings | ||
Makefile.am | ||
README.txt | ||
unit.pl |
Unit tests directory structure ------------------------------ This is the current structure of the unit tests. More directories will be added over time. mytap Source for the MyTAP library mysys Tests for mysys components bitmap-t.c Unit test for MY_BITMAP base64-t.c Unit test for base64 encoding functions examples Example unit tests. core-t.c Example of raising a signal in the middle of the test THIS TEST WILL STOP ALL FURTHER TESTING! simple-t.c Example of a standard TAP unit test skip-t.c Example where some test points are skipped skip_all-t.c Example of a test where the entire test is skipped todo-t.c Example where test contain test points that are TODO no_plan-t.c Example of a test with no plan (avoid this) Executing unit tests -------------------- To make and execute all unit tests in the directory: make test Observe that the tests in the examples/ directory are just various examples of tests and are not expected to pass. Adding unit tests ----------------- Add a file with a name of the format "foo-t.c" to the appropriate directory and add the following to the Makefile.am in that directory (where ... denotes stuff already there): noinst_PROGRAMS = ... foo-t Note, it's important to have "-t" at the end of the filename, otherwise the test won't be executed by 'make test' ! Documentation ------------- The generated documentation is temporarily placed at: http://www.kindahl.net/mytap/doc/ I will move it to a better place once I figure out where and how.