• Vladislav Vaintroub's avatar
    MDEV-22578 thread_pool_info crashes with clang6, using SSE instructions on unaligned memory · 69077dea
    Vladislav Vaintroub authored
    Apparently, in stats_reset_table(), the innocuous
    
      memset(&group->counters, 0, sizeof(group->counters));
    
    is converted by clang to SSE2 instructions.
    
    The problem is that "group" is not correctly aligned,
    despite  MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) in the thread_group_t
    declaration.
    
    It is not aligned because it was allocated with my_malloc, since
    commit fd9f1638, MDEV-5205. Previously all_groups was a
    statically allocated array.
    
    Fix is to remove MY_ALIGNED, and pad the struct instead.
    69077dea
threadpool_generic.h 3.8 KB