Index: vmcore/src/init/finalizer_thread.cpp =================================================================== --- vmcore/src/init/finalizer_thread.cpp (revision 529263) +++ vmcore/src/init/finalizer_thread.cpp (working copy) @@ -154,12 +154,14 @@ static void wait_finalization_end(void) { hymutex_lock(&fin_thread_info->end_mutex); - while(unsigned int fin_obj_num = vm_get_finalizable_objects_quantity()){ + unsigned int fin_obj_num = vm_get_finalizable_objects_quantity(); + while(fin_thread_info->working_thread_num || fin_obj_num){ unsigned int wait_time = restrict_wait_time(fin_obj_num + 1000, FIN_MAX_WAIT_TIME << 7); atomic_inc32(&fin_thread_info->end_waiting_num); IDATA status = hycond_wait_timed(&fin_thread_info->end_cond, &fin_thread_info->end_mutex, (I_64)wait_time, 0); atomic_dec32(&fin_thread_info->end_waiting_num); if(status != TM_ERROR_NONE) break; + fin_obj_num = vm_get_finalizable_objects_quantity(); } hymutex_unlock(&fin_thread_info->end_mutex); }