• Vladislav Vaintroub's avatar
    Bug#473914: mysql_client_test fail with in debug compilaton on windows x64 · 7a80fa96
    Vladislav Vaintroub authored
     
    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.
    7a80fa96
CMakeLists.txt 5.38 KB