I found the reason my self. The problem comes from the mutex. there is a recursive mutex in my code which happen when handle_close() was called. And I use ACE_Thread_Mutex as mutex. but it seems that the program runs normally on Windows.