• Aditya A's avatar
    Bug#14234028 - CRASH DURING SHUTDOWN WITH BACKGROUND PURGE THREAD · b61f494c
    Aditya A authored
     
     Analysis
     --------- 
     
     my_stat() calls stat() and if the stat() call fails we try to set 
     the variable  my_errno which is actually a thread specific data .
     We try to get the  address of this thread specific data using
     my_pthread_getspecifc(),but for the purge thread we have not defined 
     any thread specific data so it returns null and when dereferencing 
     null we get a segmentation fault.
            init_available_charsets() seen in the core stack is invoked 
     through  pthread_once() .pthread_once is used for one time 
     initialization.Since free_charsets() is called before innodb plugin 
     shutdown ,purge thread calls init_avaliable_charsets() which leads 
     to the crash.
    
     Fix
     ---
     Call free_charsets() after the innodb plugin shutdown,since purge 
     threads are still using the charsets. 
    b61f494c
mysqld.cc 321 KB