crash thread: mysqld.exe!yaSSL::SSL_SESSION::GetBornOn() Line 1524 + 0x5 bytes C++ mysqld.exe!yaSSL::Sessions::Flush() Line 1703 + 0x12 bytes C++ mysqld.exe!yaSSL::Sessions::add(const yaSSL::SSL & ssl={...}) Line 1604 C++ mysqld.exe!yaSSL::sendFinished(yaSSL::SSL & ssl={...}, yaSSL::ConnectionEnd side=server_end, yaSSL::BufferOutput buffer=buffered) Line 916 C++ mysqld.exe!yaSSL_accept(yaSSL::SSL * ssl=0x0000000001d32aa0) Line 372 C++ mysqld.exe!ssl_do(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a6608, long timeout=0x00000064, int (SSL *)* connect_accept_func=0x000000014067ff00) Line 202 + 0xc bytes C mysqld.exe!sslaccept(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a6608, long timeout=0x00000064) Line 256 + 0x46 bytes C mysqld.exe!check_connection(THD * thd=0x0000000003692b98) Line 812 + 0x1d bytes C++ mysqld.exe!login_connection(THD * thd=0x0000000003692b98) Line 962 + 0xd bytes C++ mysqld.exe!handle_one_connection(void * arg=0x0000000003692b98) Line 1126 + 0xa bytes C++ mysqld.exe!pthread_start(void * param=0x0000000003bd32c0) Line 85 + 0x9 bytes C mysqld.exe!_callthreadstart() Line 295 C mysqld.exe!_threadstart(void * ptd=0x0000000001ca3a00) Line 277 C kernel32.dll!BaseThreadStart() + 0x3a bytes In Flush(), it crashes here: ++next; if ( ((*si)->GetBornOn() + (*si)->GetTimeOut()) < current) { <------ del_ptr_zero()(*si); list_.erase(si); } Other running threads: mysqld.exe!TaoCrypt::`anonymous namespace'::MakeByte(unsigned int & x=0x00000089, unsigned int & y=0x000000fa, unsigned char * s=0x0000000001cc64e2) Line 61 + 0x26 bytes C++ mysqld.exe!TaoCrypt::ARC4::Process(unsigned char * out=0x0000000003a2d2a8, const unsigned char * in=0x0000000003a2d290, unsigned int length=0x00000017) Line 94 + 0x14 bytes C++ mysqld.exe!TaoCrypt::RandomNumberGenerator::GenerateBlock(unsigned char * output=0x0000000003a2d290, unsigned int sz=0x00000030) Line 58 C++ mysqld.exe!yaSSL::RandomPool::Fill(unsigned char * dst=0x0000000003a2d290, unsigned int sz=0x00000030) Line 548 C++ mysqld.exe!yaSSL::clean(volatile unsigned char * p=0x0000000003a2d290, unsigned int sz=0x00000030, yaSSL::RandomPool & ran={...}) Line 2142 C++ ws2_32.dll!recv() + 0x170 bytes mysqld.exe!yaSSL::SSL_SESSION::~SSL_SESSION() Line 1549 C++ mysqld.exe!yaSSL::Socket::receive(unsigned char * buf=0x0000000004e9f414, unsigned int sz=0x00000001, int flags=0x00000002) Line 135 + 0x1d bytes C++ mysqld.exe!yaSSL::SSL_SESSION::`scalar deleting destructor'() + 0x31 bytes C++ mysqld.exe!yaSSL::Socket::wait() Line 157 + 0x1b bytes C++ mysqld.exe!yaSSL::ysDelete(yaSSL::SSL_SESSION * ptr=0x0000000003a2d270) Line 97 + 0x2b bytes C++ mysqld.exe!yaSSL::DoProcessReply(yaSSL::SSL & ssl={...}) Line 708 + 0x15 bytes C++ mysqld.exe!yaSSL::checked_delete(yaSSL::SSL_SESSION * p=0x0000000003a2d270) Line 187 C++ mysqld.exe!yaSSL::processReply(yaSSL::SSL & ssl={...}) Line 792 + 0xa bytes C++ mysqld.exe!yaSSL::del_ptr_zero::operator()(yaSSL::SSL_SESSION * & p=0x0000000000000000) Line 200 C++ mysqld.exe!yaSSL_accept(yaSSL::SSL * ssl=0x0000000003705540) Line 364 C++ mysqld.exe!yaSSL::Sessions::Flush() Line 1705 C++ mysqld.exe!ssl_do(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a6268, long timeout=0x00000064, int (SSL *)* connect_accept_func=0x000000014067ff00) Line 202 + 0xc bytes C mysqld.exe!yaSSL::Sessions::add(const yaSSL::SSL & ssl={...}) Line 1604 C++ mysqld.exe!sslaccept(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a6268, long timeout=0x00000064) Line 256 + 0x46 bytes C mysqld.exe!yaSSL::sendFinished(yaSSL::SSL & ssl={...}, yaSSL::ConnectionEnd side=server_end, yaSSL::BufferOutput buffer=buffered) Line 916 C++ mysqld.exe!check_connection(THD * thd=0x000000000367ef18) Line 812 + 0x1d bytes C++ mysqld.exe!yaSSL_accept(yaSSL::SSL * ssl=0x00000000037c2040) Line 372 C++ mysqld.exe!login_connection(THD * thd=0x000000000367ef18) Line 962 + 0xd bytes C++ mysqld.exe!ssl_do(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a67d8, long timeout=0x00000064, int (SSL *)* connect_accept_func=0x000000014067ff00) Line 202 + 0xc bytes Cmysqld.exe!handle_one_connection(void * arg=0x000000000367ef18) Line 1126 + 0xa bytes C++ mysqld.exe!sslaccept(st_VioSSLFd * ptr=0x0000000001cbf108, st_vio * vio=0x00000000036a67d8, long timeout=0x00000064) Line 256 + 0x46 bytes C mysqld.exe!pthread_start(void * param=0x0000000004f1e620) Line 85 + 0x9 bytes C mysqld.exe!check_connection(THD * thd=0x0000000003968ae8) Line 812 + 0x1d bytes C++ mysqld.exe!_callthreadstart() Line 295 C mysqld.exe!login_connection(THD * thd=0x0000000003968ae8) Line 962 + 0xd bytes C++ mysqld.exe!_threadstart(void * ptd=0x0000000001ca4060) Line 277 C mysqld.exe!handle_one_connection(void * arg=0x0000000003968ae8) Line 1126 + 0xa bytes C++ kernel32.dll!BaseThreadStart() + 0x3a bytes mysqld.exe!pthread_start(void * param=0x0000000004f152c0) Line 85 + 0x9 bytes C mysqld.exe!_callthreadstart() Line 295 C mysqld.exe!_threadstart(void * ptd=0x0000000001ca46c0) Line 277 C This means concurrent threads can run yaSSL::Sessions::Flush() ! Looks like Lock guard(mutex_); just doesn't work correctly to protect the session list in list_