-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
None
-
generic
-
generic
The code in BeanContextSupport.java acquires synchronization objects in different order (once acquires BeanContext.globalHierarchyLock and then children, another time acquires children and then BeanContext.globalHierarchyLock).
Acquiring synchronization objects in different order can cause circular wait (deadlock).
Here is the first order: (1) first acquire BeanContext.globalHierarchyLock and then children:
enter public method remove(Object) at line 481
call remove(Object, boolean) at line 482
acquire synchronization on BeanContext.globalHierarchyLock at line 499
acquire synchronization on children at line 531
Here is the second order: (2) first acquire children and then BeanContext.globalHierarchyLock:
enter public method propertyChange() at line 1112
acquire synchronization on children at line 1116
call remove(Object, boolean) at line 1123
acquire synchronization on BeanContext.globalHierarchyLock at line 499
Acquiring synchronization objects in different order can cause circular wait (deadlock).
Here is the first order: (1) first acquire BeanContext.globalHierarchyLock and then children:
enter public method remove(Object) at line 481
call remove(Object, boolean) at line 482
acquire synchronization on BeanContext.globalHierarchyLock at line 499
acquire synchronization on children at line 531
Here is the second order: (2) first acquire children and then BeanContext.globalHierarchyLock:
enter public method propertyChange() at line 1112
acquire synchronization on children at line 1116
call remove(Object, boolean) at line 1123
acquire synchronization on BeanContext.globalHierarchyLock at line 499
- duplicates
-
JDK-8238170 BeanContextSupport remove and propertyChange can deadlock
-
- Resolved
-