--- old/src/share/vm/prims/jvmtiExport.cpp Thu Mar 13 15:50:18 2014 +++ new/src/share/vm/prims/jvmtiExport.cpp Thu Mar 13 15:50:17 2014 @@ -993,7 +993,9 @@ // Before we call the JVMTI agent, we have to set the state in the // thread for which we are proxying. JavaThreadState prev_state = real_thread->thread_state(); - assert(prev_state == _thread_blocked, "JavaThread should be at safepoint"); + assert(((Thread *)real_thread)->is_ConcurrentGC_thread() || + (real_thread->is_Java_thread() && prev_state == _thread_blocked), + "should be ConcurrentGCThread or JavaThread at safepoint"); real_thread->set_thread_state(_thread_in_native); jvmtiExtensionEvent callback = env->ext_callbacks()->ClassUnload;