8308978: regression with a deadlock involving FollowReferences
Reviewed-by: sspitsyn, lmesnik
This commit is contained in:
parent
aff9cea054
commit
62c935d4fa
@ -2968,14 +2968,15 @@ void JvmtiTagMap::iterate_over_reachable_objects(jvmtiHeapRootCallback heap_root
|
|||||||
jvmtiStackReferenceCallback stack_ref_callback,
|
jvmtiStackReferenceCallback stack_ref_callback,
|
||||||
jvmtiObjectReferenceCallback object_ref_callback,
|
jvmtiObjectReferenceCallback object_ref_callback,
|
||||||
const void* user_data) {
|
const void* user_data) {
|
||||||
|
// VTMS transitions must be disabled before the EscapeBarrier.
|
||||||
|
JvmtiVTMSTransitionDisabler disabler;
|
||||||
|
|
||||||
JavaThread* jt = JavaThread::current();
|
JavaThread* jt = JavaThread::current();
|
||||||
EscapeBarrier eb(true, jt);
|
EscapeBarrier eb(true, jt);
|
||||||
eb.deoptimize_objects_all_threads();
|
eb.deoptimize_objects_all_threads();
|
||||||
Arena dead_object_arena(mtServiceability);
|
Arena dead_object_arena(mtServiceability);
|
||||||
GrowableArray<jlong> dead_objects(&dead_object_arena, 10, 0, 0);
|
GrowableArray<jlong> dead_objects(&dead_object_arena, 10, 0, 0);
|
||||||
|
|
||||||
JvmtiVTMSTransitionDisabler disabler;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MutexLocker ml(Heap_lock);
|
MutexLocker ml(Heap_lock);
|
||||||
BasicHeapWalkContext context(heap_root_callback, stack_ref_callback, object_ref_callback);
|
BasicHeapWalkContext context(heap_root_callback, stack_ref_callback, object_ref_callback);
|
||||||
@ -3015,6 +3016,9 @@ void JvmtiTagMap::follow_references(jint heap_filter,
|
|||||||
const jvmtiHeapCallbacks* callbacks,
|
const jvmtiHeapCallbacks* callbacks,
|
||||||
const void* user_data)
|
const void* user_data)
|
||||||
{
|
{
|
||||||
|
// VTMS transitions must be disabled before the EscapeBarrier.
|
||||||
|
JvmtiVTMSTransitionDisabler disabler;
|
||||||
|
|
||||||
oop obj = JNIHandles::resolve(object);
|
oop obj = JNIHandles::resolve(object);
|
||||||
JavaThread* jt = JavaThread::current();
|
JavaThread* jt = JavaThread::current();
|
||||||
Handle initial_object(jt, obj);
|
Handle initial_object(jt, obj);
|
||||||
@ -3027,8 +3031,6 @@ void JvmtiTagMap::follow_references(jint heap_filter,
|
|||||||
Arena dead_object_arena(mtServiceability);
|
Arena dead_object_arena(mtServiceability);
|
||||||
GrowableArray<jlong> dead_objects(&dead_object_arena, 10, 0, 0);
|
GrowableArray<jlong> dead_objects(&dead_object_arena, 10, 0, 0);
|
||||||
|
|
||||||
JvmtiVTMSTransitionDisabler disabler;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MutexLocker ml(Heap_lock);
|
MutexLocker ml(Heap_lock);
|
||||||
AdvancedHeapWalkContext context(heap_filter, klass, callbacks);
|
AdvancedHeapWalkContext context(heap_filter, klass, callbacks);
|
||||||
|
@ -31,18 +31,6 @@ serviceability/dcmd/thread/PrintConcurrentLocksTest.java 8308033 generic-all
|
|||||||
serviceability/dcmd/thread/PrintTest.java 8308033 generic-all
|
serviceability/dcmd/thread/PrintTest.java 8308033 generic-all
|
||||||
serviceability/dcmd/thread/ThreadDumpToFileTest.java 8308033 generic-all
|
serviceability/dcmd/thread/ThreadDumpToFileTest.java 8308033 generic-all
|
||||||
serviceability/tmtools/jstack/DaemonThreadTest.java 8308033 generic-all
|
serviceability/tmtools/jstack/DaemonThreadTest.java 8308033 generic-all
|
||||||
vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/ReferenceType/instances/instances001/instances001.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/ReferenceType/instances/instances003/instances003.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/ReferenceType/instances/instances004/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/MonitorWaitedRequest/addThreadFilter/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts002/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/stress/serial/monitorEvents002/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/stress/serial/heapwalking001/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/stress/serial/heapwalking002/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jdi/stress/serial/mixed001/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jvmti/scenarios/allocation/AP04/ap04t001/TestDescription.java 8308978 generic-all
|
|
||||||
vmTestbase/nsk/jvmti/scenarios/allocation/AP04/ap04t002/TestDescription.java 8308978 generic-all
|
|
||||||
|
|
||||||
####
|
####
|
||||||
## Classes not unloaded as expected (TODO, need to check if FJ keeps a reference)
|
## Classes not unloaded as expected (TODO, need to check if FJ keeps a reference)
|
||||||
|
Loading…
Reference in New Issue
Block a user