922 if (cur_thread->safepoint_state()->is_running()) {
923 ls.print("# ");
924 cur_thread->print_on(&ls);
925 ls.cr();
926 }
927 }
928 ls.print_cr("# SafepointSynchronize::begin: (End of list)");
929 }
930 }
931
932 // To debug the long safepoint, specify both AbortVMOnSafepointTimeout &
933 // ShowMessageBoxOnError.
934 if (AbortVMOnSafepointTimeout) {
935 // Send the blocking thread a signal to terminate and write an error file.
936 for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur_thread = jtiwh.next(); ) {
937 if (cur_thread->safepoint_state()->is_running()) {
938 if (!os::signal_thread(cur_thread, SIGILL, "blocking a safepoint")) {
939 break; // Could not send signal. Report fatal error.
940 }
941 // Give cur_thread a chance to report the error and terminate the VM.
942 os::sleep(Thread::current(), 3000, false);
943 }
944 }
945 fatal("Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
946 SafepointTimeoutDelay, VMThread::vm_operation()->name());
947 }
948 }
949
950 // -------------------------------------------------------------------------------------------------------
951 // Implementation of ThreadSafepointState
952
953 ThreadSafepointState::ThreadSafepointState(JavaThread *thread)
954 : _at_poll_safepoint(false), _thread(thread), _safepoint_safe(false),
955 _safepoint_id(SafepointSynchronize::InactiveSafepointCounter), _next(NULL) {
956 }
957
958 void ThreadSafepointState::create(JavaThread *thread) {
959 ThreadSafepointState *state = new ThreadSafepointState(thread);
960 thread->set_safepoint_state(state);
961 }
962
|
922 if (cur_thread->safepoint_state()->is_running()) {
923 ls.print("# ");
924 cur_thread->print_on(&ls);
925 ls.cr();
926 }
927 }
928 ls.print_cr("# SafepointSynchronize::begin: (End of list)");
929 }
930 }
931
932 // To debug the long safepoint, specify both AbortVMOnSafepointTimeout &
933 // ShowMessageBoxOnError.
934 if (AbortVMOnSafepointTimeout) {
935 // Send the blocking thread a signal to terminate and write an error file.
936 for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur_thread = jtiwh.next(); ) {
937 if (cur_thread->safepoint_state()->is_running()) {
938 if (!os::signal_thread(cur_thread, SIGILL, "blocking a safepoint")) {
939 break; // Could not send signal. Report fatal error.
940 }
941 // Give cur_thread a chance to report the error and terminate the VM.
942 os::naked_sleep(3000);
943 }
944 }
945 fatal("Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
946 SafepointTimeoutDelay, VMThread::vm_operation()->name());
947 }
948 }
949
950 // -------------------------------------------------------------------------------------------------------
951 // Implementation of ThreadSafepointState
952
953 ThreadSafepointState::ThreadSafepointState(JavaThread *thread)
954 : _at_poll_safepoint(false), _thread(thread), _safepoint_safe(false),
955 _safepoint_id(SafepointSynchronize::InactiveSafepointCounter), _next(NULL) {
956 }
957
958 void ThreadSafepointState::create(JavaThread *thread) {
959 ThreadSafepointState *state = new ThreadSafepointState(thread);
960 thread->set_safepoint_state(state);
961 }
962
|