diff options
author | Vladislav Vaintroub <wlad@montyprogram.com> | 2010-12-06 12:52:06 +0100 |
---|---|---|
committer | Vladislav Vaintroub <wlad@montyprogram.com> | 2010-12-06 12:52:06 +0100 |
commit | 0eae06c43007d7e59275af2d437b3c19537bab46 (patch) | |
tree | 71fb765ab78a47e1071744cabe2ba85e60051009 /extra | |
parent | 91a72ee314ce6b0ac7adfc6546390435c9ba164f (diff) | |
download | mariadb-git-0eae06c43007d7e59275af2d437b3c19537bab46.tar.gz |
Bug#473914: mysql_client_test fail with in debug compilaton on windows x64
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.
Diffstat (limited to 'extra')
-rwxr-xr-x | extra/CMakeLists.txt | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index ba90492577d..6cc69d3251e 100755 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -14,8 +14,6 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") -SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") -SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) |